Kir*_*kov 2 .net c# arrays initialization
任何人都可以解释一下,为什么我必须使用这种代码模式?
// 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(); }
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么在调用时不会发生数组中对象的初始化new CD[20].好像我在编写多余的代码.可以跳过其中一个步骤吗?
CD[] cdLibrary = new CD[20];
Run Code Online (Sandbox Code Playgroud)
这只会创建存储引用的"容器".考虑一下饼干罐,适合20个饼干.此时您还没有实际创建过cookie,您刚刚创建了一个jar(数组),它可以容纳指定数量的cookie(CD在这种情况下为对象).
for (int i=0; i<20; i++) {
cdLibrary[i] = new CD();
}
Run Code Online (Sandbox Code Playgroud)
这将创建20个cookie并将其放入jar中.
编辑:Jon Skeet在评论部分提到了一个非常好的观点,请务必查看.他的比喻没有这个问题,应该被认为更准确(虽然饼干比纸张更有趣).
我无法理解为什么数组中对象的初始化不会在operator new中执行.
你是说这条线吗?
CD[] cdLibrary = new CD[20];
Run Code Online (Sandbox Code Playgroud)
这不会初始化20个对象.它初始化数组,只有数组 - 数组有20个元素,每个元素的值null(空引用)以1开头.这就像创建一个具有给定数量的空页的书; 如果您希望页面包含信息,则必须分别在每个页面上写入,这就是后面的循环所做的.
1CD为简单起见,我假设这是一种类型.