根据vs的文档:MakeArrayType()
表示一维数组,下限为零。 MakeArrayType(1)
表示具有指定维数的数组。
例如,如果UnderlyingSystemType为int
,则MakeArrayType()
的返回类型为System.Int32[]
,并且MakeArrayType(1)
的返回类型为System.Int32[*]
。
这些类型之间有什么区别。
最佳答案
从返回的类型(.MakeArrayType()
与.MakeArrayType(1)
)中可以看出,Int32[]
和Int32[*]
之间有细微的差别。根据.MakeArrayType()
的文档:
因此,当您调用.MakeArrayType()
时,它会返回一个Vector(这是始终具有一个维度的特殊事物)。调用.MakeArrayType(1)
会创建一个多维数组(而不是一个Vector)-碰巧它只有一个维。
vector 和数组之间的区别在技术上是相当专业的,但基本上 vector 是由CLR进行特殊处理的,因此可以使用其他IL指令来使它们更有效。有关数组和 vector 之间差异的更多信息,请参见:http://markettorrent.com/community/7968#Vectors vs. Arrays
关于c# - .MakeArrayType()和.MakeArrayType(1)之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7057951/