今天我在这个网站上看到了答案. MVC ViewModel - 对象引用未设置为对象的实例
我对实例化类的默认值感到困惑.当我们使用"new"关键字创建新类时,其字段的值会自动设置为默认值.
例如,整数变为0,字符串变为null.
列表怎么样?
List<int>
Run Code Online (Sandbox Code Playgroud)
为什么我们没有List的新实例属于instanced对象?
为什么我们没有List的新实例属于instanced对象?
以下类别的变量自动初始化为其默认值:
- 静态变量
- 类实例的实例变量
- 数组元素变量的默认值取决于变量的类型,并确定如下:
- 对于value-type的变量,默认值与value-type的默认构造函数计算的值相同.
- 对于reference-type的变量,默认值为null.
请参阅上面的粗体摘录 - 因为List<int>是参考类型,因此它被初始化为null.
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)
请注意,FirstName和LastName均为字符串,其默认值为null。字符串是引用类型。
| 归档时间: |
|
| 查看次数: |
2910 次 |
| 最近记录: |