.MakeArrayType()和.MakeArrayType(1)之间的区别

Sag*_*agi 13 .net c# arrays

根据vs的文档:MakeArrayType()表示下限为零的一维数组.MakeArrayType(1)表示具有指定维数的数组.例如,如果UnderlyingSystemType是is int的返回类型,MakeArrayType()System.Int32[]返回类型为MakeArrayType(1)is System.Int32[*].
这些类型之间有什么区别.

Ste*_*iel 18

之间存在微妙的差异.MakeArrayType(),并.MakeArrayType(1)为您从被返回(类型看出Int32[]Int32[*]).根据以下文件.MakeArrayType():

注意:公共语言运行库区分向量(即,始终从零开始的一维数组)和多维数组.始终只有一个维度的向量与恰好只有一个维度的多维数组不同.此方法重载只能用于创建矢量类型,而且它是创建矢量类型的唯一方法.使用MakeArrayType(Int32)方法重载来创建多维数组类型. 资源

所以当你调用.MakeArrayType()它时会返回一个Vector(这是一个特殊的东西,总是有一个维度).调用.MakeArrayType(1)会产生一个多维数组(而不是Vector) - 只是它只有一个维度.

Vector和Array之间的区别非常技术性,但基本上Vector通过CLR得到特殊处理,因此有额外的IL指令可以与它们一起使用,并且可以使它们更有效.有关Arrays和Vectors之间差异的更多信息,请参阅:http://markettorrent.com/community/7968#Vectors vs. Arrays