如果我们不显式传递数组的大小,数组在哪里初始化?



我是编程新手。在学习数据结构 Array 时,我开始知道我们必须在创建一个数组时用大小初始化数组。但我也在其中一个网站中看到了一个代码片段,我用它来学习编码。代码如下

int[] ar = Array.ConvertAll(Console.ReadLine().Split(' '), arTemp => Convert.ToInt32(arTemp))

我猜代码是从控制台读取输入(这是一个字符串(并将其拆分为子字符串,然后转换为整数数组并存储在"ar"中。

我的问题是这一行没有错误。但是在使用它们之前没有提到数组大小。这是怎么回事?在这种情况下,此数组的大小在哪里初始化?

来自 MSDN:

Array.ConvertAll():将一种类型的数组转换为另一种类型的数组。


在这种情况下,此数组的大小在哪里初始化?

在静态函数Array.ConvertAll(),大小数组基于您的输入数组。

在您的情况下,输入数组是Console.ReadLine().Split(' ').Split(' ')返回一个空格分隔的单词数组此数组的大小分配给Array.ConvertAll()函数的输出

int[] ar = Array.ConvertAll(Console.ReadLine().Split(' '), arTemp => Convert.ToInt32(arTemp))
//+      +++++++++++++   ++++++++++++++++++++++++                   ++++++
//|             |                     |                                |
//|             |                     |                                + Integer convertor
//|             |                     |
//|             |                     +   Input array with it's size
//|             |
//|             + Converting input array to array of type int
//|
//+ Output integer array

intar 是对数组的引用。数组大小在运行时确定。Array.ConvertAll(...( 返回一个数组,即实际对象。创建的这个新数组链接到 ar 变量。

最新更新