根据vs:MakeArrayType()
的文档表示具有零下限的一维数组。 MakeArrayType(1)
表示具有指定维数的数组。 例如,如果底层系统类型为int
,返回类型MakeArrayType()
为 System.Int32[]
,并且返回类型为MakeArrayType(1)
为System.Int32[*]
。
这些类型之间有什么区别。.MakeArrayType()和.MakeArrayType(1)之间的区别
回答
如您从返回的类型(Int32[]
与Int32[*]
)中看到的,.MakeArrayType()
和.MakeArrayType(1)
之间存在细微差异。根据文档.MakeArrayType()
:
注:公共语言运行时使得矢量 区分(即,一维数组,它们总是从0开始)和 多维数组。矢量总是只有一个维度,与发生在 的多维数组只有一个维度不同。此方法重载只能用于创建矢量类型,并且它是创建矢量类型的唯一方法。 使用MakeArrayType(Int32)方法重载创建 多维数组类型。 Source
所以,当你调用.MakeArrayType()
它返回一个向量(这是总有一名维特殊的东西)。调用.MakeArrayType(1)
会生成一个多维数组(而不是一个Vector) - 只是它只有一个维度而已。
Vector和Array之间的区别是相当技术性的,但基本上,CLR通过Vector获得特殊处理,所以还有其他IL指令可以与它们一起工作,并且可以使它们更高效。有关数组与矢量之间差异的更多信息,请参阅:http://markettorrent.com/community/7968#Vectors vs. Arrays
很好回答。这引起了我一阵回头:http://marcgravell.blogspot.com/2010/03/when-is-int-not-int.html –
奇怪的东西。即使这里的命名约定也不一致:向量被称为“Int32 [*]”,这些数组被称为“Int32 []”和“Int32 [,]”。 – CodesInChaos
- 1. tp(,)和tpo之间的区别(1)()
- 2. ASP.NET MVC 1和3之间的区别
- 3. “$ | ++”和“$ | = 1”之间的区别是什么
- 4. srand(1)和srand(0)之间的区别
- 5. TimerTask和Executors.newScheduledThreadPool之间的区别(1)
- 6. Javascript:Forloop i ++和(i + 1)之间的区别
- 7. .htaccess中$ 1 vs%1之间的区别
- 8. MongoDB中的db.runCommand({getlasterror:1,fsync:true})和db.runCommand({getlasterror:1})之间的区别?
- 9. C中*(a [1])和*(* a + 1)之间的区别是什么?
- 10. PHP中(int)1和1之间的任何区别?
- 11. Python中list [1]和list [1:]之间的区别是什么?
- 12. (eval'(+ 1 2))和(eval(+ 1 2))之间的区别?
- 13. sizeof(str -1)和sizeof(str)-1之间的区别?
- 14. 蟒蛇的1/3和1./3之间有什么区别
- 15. '+ ='和'= +'之间的区别?
- 16. #。/和#之间的区别。 ./
- 17. {!!之间的区别!!}和{{}}
- 18. ==和case之间的区别?
- 19. 之间的区别。和#
- 20. '#','%'和'$'之间的区别
- 21. | =和^ = css之间的区别
- 22. “%〜dp0”和“。\”之间的区别?
- 23. .eq之间的区别。和==
- 24. ==和.equals()之间的区别?
- 25. `%in%`和`==`之间的区别
- 26. Lisp中1和'1之间有什么区别?
- 27. MyModel.objects.filter(pk = 1)和MyModel.objects.get(pk = 1)之间有区别吗?
- 28. os.system(“timeout 1”)和time.sleep(1)之间有什么区别? Python
- 29. SPFile和PublishingPage类别之间的区别
- 30. System.Timers.Timer Enabled = true和.Start()之间的区别Enabled = true和.Start()之间的区别
最大的交易是C#不直接支持int [*]数组,您必须使用Array。下一个最大的交易是抖动可以为int []生成更好的代码,因为它知道前面只有一个维度。 –