今天我在这个网站上看到了答案。 MVC ViewModel - Object Reference Not Set to Instance of an Object
我对实例化类的默认值感到困惑。当我们使用" new"创建新课程时关键字,其字段值自动设置为默认值。
例如,整数变为0,字符串变为空。
列表怎么样?
List<int>
为什么我们没有新的List实例属于instanced对象?
答案 0 :(得分:8)
为什么我们没有新的List实例属于instanced对象?
As per the C# specification, ECMA-334, section 12.2:
以下类别的变量会自动初始化为默认值:
- 静态变量
- 类实例的实例变量
- 数组元素变量的默认值取决于变量的类型,并确定如下:
- 对于value-type的变量,默认值与value-type的默认构造函数计算的值相同。
- 对于reference-type的变量,默认值为null。
请参阅上面的粗体摘录 - 由于List<int>
是参考类型,因此它会初始化为null
。
答案 1 :(得分:4)
其中T为任何类型的List<T>
是引用类型。因此,它的默认值为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; }
}
其中Order是一个类。
如果您实例化类型为customer的对象,如下所示:
var customer = new Customer();
然后
customer.Id // is 0
customer.FirstName // is null
customer.LastName // is null
customer.Orders // is null
请注意,FirstName
和LastName
都是字符串,其默认值为null。字符串是引用类型。