C#初始化数组

本文关键字:数组 初始化 | 更新日期: 2023-09-27 18:28:34

有人能解释一下,为什么我必须使用这个代码模式吗?

    // Create the array to store the CDs.
    CD[] cdLibrary = new CD[20];
    // Populate the CD library with CD objects.
    for (int i=0; i<20; i++)
    { cdLibrary[i] = new CD(); }

我不明白为什么当我调用new CD[20]时,数组中对象的初始化没有发生。我似乎在写多余的代码。可以跳过其中一个步骤吗?

C#初始化数组

我不明白为什么数组中对象的初始化不在运算符new中执行。

你是指这条线吗?

CD[] cdLibrary = new CD[20];

不会初始化20个对象。它初始化数组,只有数组-数组有20个元素,每个元素的值为null(空引用),以1开头。这就像创建一本有一定数量空页的书;如果你想让页面包含信息,你必须分别在每个页面上写,这就是后面的循环所做的。


1为了简单起见,我假设CD是一个类类型。

CD[] cdLibrary = new CD[20];

这只不过是创建一个存储引用的"容器"。把它想象成一个饼干罐,可以放20块饼干。在这一点上,您还没有真正创建cookie,您只创建了一个jar(数组),它可以容纳指定数量的cookie(在本例中为CD对象)。

for (int i=0; i<20; i++) {
 cdLibrary[i] = new CD(); 
}

这将创建20个cookie并将其放入罐子中。

编辑:Jon Skeet在评论部分提到了一个非常好的观点,一定要看看。他的类比没有这个问题,应该被认为更准确(尽管饼干比纸更有趣)。