为什么我需要两次实例化一个对象数组?

Sub*_*cob 6 c#

我已经像这样创建了一个Object数组.但是要为对象赋值,我必须在数组的每个位置实例化每个对象?我为什么需要这个?

这是我的方法

 StageObject[] StageSplitDate = new StageObject[Stages.Rows.Count];
            for (int i = 0; i < Stages.Rows.Count; i++)
            {
                StageSplitDate[i] = new StageObject();
                StageSplitDate[i].StageId = "String Value";
                StageSplitDate[i].FromTime = StartTime;
                StartTime =StartTime.AddMinutes(Convert.ToDouble(10));
                StageSplitDate[i].ToTime = StartTime;
            }
            return StageSplitDate;
Run Code Online (Sandbox Code Playgroud)

和对象类

 public class StageObject
    {
        public string StageId { get; set; }
        public DateTime FromTime { get; set; }
        public DateTime ToTime { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 3

\n

我必须在数组的每个位置实例化每个对象吗?

\n
\n\n

您没有实例化数组元素两次。在第一行中,您实例化了一个数组StageSplitDate ,其中每个元素都设置为 null。默认情况下,每个数组(引用类型)元素都初始化为 null。要进一步使用它,您还需要实例化数组中的每个对象,否则您将得到空引用异常。

\n\n

对于 C#

\n\n

数组(C# 编程指南)-MSDN

\n\n

数值数组元素的默认值设置为零,引用元素设置为 null

\n\n

(因为这个问题最初被标记为java)

\n\n

对于JAVA

\n\n

4.12.5。变量的初始值

\n\n
\n
    \n
  • 每个类变量、实例变量或数组组件在创建时都使用默认值进行初始化(\xc2\xa715.9、\xc2\xa715.10):
  • \n
  • 对于所有引用类型 (\xc2\xa74.3),默认值为 null
  • \n
\n
\n