gpt4 book ai didi

c# - T[,] 和 T[*,*] 有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 08:21:02 24 4
gpt4 key购买 nike

我的谷歌柔术让我失望了。问题在标题中...T[,]T[*,*] 有什么区别?我正在寻找 2、2-1/2 部分的答案:

  1. 外行(或 super 架构师)通俗易懂的英语解释和示例代码。

  2. 此区别的正式文档链接。

    奖励:指向定义此内容的 C# 4 规范中的小节和页码。 (它不在第 12 节“数组”中)

我有这个想法here .

最佳答案

T[] 表示从零开始的 T 数组(数组[0] 是它的第一个元素)

T[*] 表示 T 的非零基数组 (array[0] 不是它的第一个元素,甚至可以越界)

link from your question说明没有T[*,*]类型的数组,因为T[,]的所有多维数组都被视为下界未知的数组。

下面的代码片段显示了如何创建 T[*] 的实例。请注意,您不能将其转换为 T[],因为它们是不同的类型。 a[0] 将抛出 OutOfRangeException,此数组中第一个元素的索引为 1 (啊,过去的 Pascal 时代...)

Array a = Array.CreateInstance(typeof(String), new Int32[] { 1 }, new Int32[] { 1 });
Console.WriteLine(a.GetType()); // System.String[*]

More example code

奖励。C# 语言规范说,“数组元素的索引范围从 0 到 Length - 1”。显然,该语言不提供对非零基数组的内置支持,它只是您可以创建的自定义数据结构;尽管从某种意义上说,编译器碰巧有一个特殊的符号来表示它的类型,而 VS 在调试时为它们使用标准数组可视化工具。

另见:

How to create a 1-Dimensional Array in C# with index starting at 1

C#: Nonzero-based arrays are not CLS-compliant

关于c# - T[,] 和 T[*,*] 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9356499/

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