评估typeof(Object[,][]).Name
给予Object[][,]
同样,typeof(Object[][,]).Name
给出Object[,][]
似乎逗号无缘无故地移动。
是什么赋予了?
评估typeof(Object[,][]).Name
给予Object[][,]
同样,typeof(Object[][,]).Name
给出Object[,][]
似乎逗号无缘无故地移动。
是什么赋予了?
混合参差不齐和矩形阵列是一种疯狂的方法。您对给定类型符号含义的直觉几乎总是错误的,或者至少我的直觉是错误的。
阅读我关于该主题的文章,看看这是否有助于您了解这里发生的事情:
http://blogs.msdn.com/b/ericlippert/archive/2009/08/17/arrays-of-arrays.aspx
基本上:C# 和反射以两种不同的方式表示混合的不规则/矩形数组,每种方式都有自己的原因。
撇开您可能想要声明这种奇异数组的目的不谈,看起来反射生成数组名称的方式是递归的:首先,它生成数组元素类型的名称,然后在方括号中附加适当的逗号数。
Object[,][]
是一维数组的二维数组;二维数组的元素类型是Object[]
,所以总体结果是"Object[]"+"[,]"
。
这是算法工作方式的另一个说明:
typeof(Object[][,][,,][,,,][,,,,]).Name
是
Object[,,,,][,,,][,,][,][]
除了实现的效率,我没有看到它背后的原因:只要它是一致的,语法是否匹配 C# 并不重要。毕竟,C# 并不是 .NET 世界中唯一的语言。