如果可以添加超过大小的元素,我们为什么要初始化数组的大小?



我悄悄地开始编程。所以我在某处读到我们应该用大小初始化数组,否则会抛出编译错误。所以在下面的代码中,我初始化了大小为 3 的数组,这意味着数组中只能存储 3 个元素,对吧?从 0 到 2 开始。但是当我运行代码并错误地给出了 4 位空格分隔的数字作为输入时。我预计会出现索引越界异常,但令我惊讶的是没有错误,当我尝试将数组的数字打印到控制台中时,所有 4 位数字都被打印出来了。怎么可能?

int[] arr = new int[3];
arr = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();

我什至想知道是否有与上述相同的方法 LINQ 读取多维数组。

提前致谢!!

您已经分配了另一个单独的内存块,原始数组 3 超出了范围

Enumerable.ToArray(IEnumerable( Method

IEnumerable<T>创建数组。

这和这样做是一样的。

var arr = new int[3]; // allocate
arr = new int[4]; // allocate again to same variable, which points to new memory

原始分配超出范围

这只是引用在 .net 中的工作方式,当您创建数组时,您在某处分配一部分内存,您的变量引用该部分内存。将新实例分配给该变量时,会在其他位置创建内存的新部分,并且变量将该引用获取到新内存。

因为ToArray方法将列表中的元素复制到新数组中。

最新更新