根据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/

10-11 02:11