类变量的默认值

Taş*_*şah 4 c# class

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

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

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

列表怎么样?

List<int>
Run Code Online (Sandbox Code Playgroud)

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

Ian*_*emp 8

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

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

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

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

请参阅上面的粗体摘录 - 因为List<int>是参考类型,因此它被初始化为null.


Chr*_*tos 5

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

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

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName  { get; set; }
    public List<Order> Orders { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

其中Order是一类。

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

var customer = new Customer();
Run Code Online (Sandbox Code Playgroud)

然后

customer.Id // is 0
customer.FirstName // is null
customer.LastName // is null
customer.Orders // is null
Run Code Online (Sandbox Code Playgroud)

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