为了账号安全,请及时绑定邮箱和手机立即绑定

为什么具有 1 和 2 秩的非零基础数组具有不同的类型?

为什么具有 1 和 2 秩的非零基础数组具有不同的类型?

PHP
芜湖不芜 2024-01-20 22:30:02
.Net 具有用于非零基础数组的特殊内部类型。C# 语言没有此类型的语法,因此无法强制转换为此类型。但是 2d 非从零开始的数组具有普通数组类型。我想知道为什么只有一维数组有特殊类型?var array1 = (int[]) Array.CreateInstance( typeof( int ), new[] { 6 }, new[] { -1 } ); // System.InvalidCastException : Unable to cast object of type 'System.Int32[*]' to type 'System.Int32[]'var array2 = (int[,]) Array.CreateInstance( typeof( int ), new[] { 6, 6 }, new[] { -1, -1 } ); // it works
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

从 0 开始的一维数组很特殊。它是一个“向量数组”。它们由 CLR 进行了大量优化。

任何不是从 0 开始或不是一维的数组都不是向量数组。
因此,an 不是向量数组,因此第二次强制转换有效。
并且是真正不同的类型。int[,]int[*]int[]


查看完整回答
反对 回复 2024-01-20
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信