.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[]
- 1 回答
- 0 關注
- 222 瀏覽
添加回答
舉報
0/150
提交
取消