为什么 typeof(Object[,][])。名称等于"Object[][,]" ?



评估typeof(Object[,][]).Name会得到Object[][,]

类似地,typeof(Object[][,]).Name给出Object[,][]

逗号似乎在莫名其妙地移动。

什么东西?

将不规则数组和矩形数组混合在一起会导致精神错乱。你对给定类型表示法含义的直觉几乎总是错误的,或者至少我的直觉是错误的

阅读我关于这个主题的文章,看看这是否有助于你理解这里发生了什么:

http://blogs.msdn.com/b/ericlippert/archive/2009/08/17/arrays-of-arrays.aspx

基本上:C#和反射符号以两种不同的方式混合了粗糙/矩形阵列,每种方式都有自己的原因。

抛开声明这种奇异数组的目的不谈,反射生成数组名称的方式似乎是递归的:首先,它生成数组元素类型的名称,然后在方括号中添加适当数量的逗号。

CCD_ 5是1D阵列的2D阵列;2D阵列的元素类型为Object[],因此总体结果为"Object[]"+"[,]"

以下是算法工作方式的另一个示例:

typeof(Object[][,][,,][,,,][,,,,]).Name

Object[,,,,][,,,][,,][,][]

除了实现的效率之外,我看不出它背后的原因:只要它是一致的,语法是否匹配C#都无关紧要。毕竟,C#并不是.NET世界中唯一的语言。

相关内容

  • 没有找到相关文章

最新更新