根据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
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |