类变量的默认值

今天我在这个网站上看到了答案。 MVC ViewModel – 对象引用未设置为对象的实例

我对实例化类的默认值感到困惑。 当我们使用“new”关键字创建新类时,其字段的值会自动设置为默认值。

例如,整数变为0,字符串变为null。

列表怎么样?

List 

为什么我们没有List的新实例属于instanced对象?

为什么我们没有List的新实例属于instanced对象?

根据C#规范,ECMA-334,第12.2节:

以下类别的变量会自动初始化为其默认值:
– 静态变量
– 类实例的实例变量
– 数组元素

变量的默认值取决于变量的类型,并确定如下:
– 对于value-type的变量,默认值与value-type的默认构造函数计算的值相同。
对于reference-type的变量,默认值为null。

请参阅上面的粗体摘录 – 因为List是引用类型,因此它被初始化为null

List其中T是任何类型是引用类型。 因此,它的默认值为null。

例如,让我们有以下类声明:

 public class Customer { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public List Orders { get; set; } } 

订单是一个类。

如果您实例化类型为customer的对象,如下所示:

 var customer = new Customer(); 

然后

 customer.Id // is 0 customer.FirstName // is null customer.LastName // is null customer.Orders // is null 

请注意, FirstNameLastName都是字符串,其默认值为null。 字符串是引用类型。