gpt4 book ai didi

.net - ArrayList 和 Array 的区别

转载 作者:行者123 更新时间:2023-12-02 07:53:49 25 4
gpt4 key购买 nike

引用MSDN , 声明“您可以设置数组的下限,但ArrayList 的下限始终为零”

如果我声明一个数组 a[10],下界总是 a[0]。

这是那里指定的下限吗?如果是,我们如何设置数组的下限,因为数组的索引总是以 a[0] 开头。

或者链接中规定的下限是否有所不同?

注意:我知道链接指向 .NET Framework 1.1 的内容,但仍然很想知道他们到底提到了什么。

最佳答案

您可以使用 Array.CreateInstance 创建一个下限非零的数组.

请注意,您无法将其转换为 Foo[] (其中 Foo 是相关类型)除非您也将其设为多维。 CLR 中有两种类型的数组 - 向量(从零开始,一维)和数组(可以是多维的并且具有非零下限) .

A T[]在 C# 中始终对应于向量,而 T[][]对应一个数组。所以你可以这样做:

int[][] rectangle = (int[][]) Array.CreateInstance(typeof(int),
new int[]{2, 2}, // lengths
new int[]{-1, -1}); // lower bounds

但这会失败:

int[] rectangle = (int[]) Array.CreateInstance(typeof(int),
new int[]{2}, // length
new int[]{-1}); // lower bound

同样,您不能将其转换为 IEnumerable<int>IList<int> - 尽管您可以使用 IEnumerable 对其进行迭代就好了。

就我个人而言,我会避免像瘟疫一样使用非零下界数组。它们很慢,而且使用起来很痛苦。

关于.net - ArrayList 和 Array 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2093780/

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