gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:25:37 25 4
gpt4 key购买 nike

.Net 对非零基数组有特殊的内部类型。

C# 语言没有这种类型的语法,所以你不能转换成这种类型。

但二维非零基数组具有普通数组类型。

我想知道为什么只有一维数组有特殊类型?

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

最佳答案

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

任何非基于 0 或非 1 维的数组都不是向量数组。
因此,int[,] 不是向量数组,因此第二次转换有效。
int[*]int[] 是完全不同的类型。

关于c# - 为什么具有 1 和 2 秩的非零基数组具有不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58159339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com