我正在学习即将发布的C# 9新特性。其中引入了Init-Only属性。
目前的一个主要限制是,对象初始化器只能用于可变属性:它们首先调用对象的构造函数(在此情况下为默认的无参数构造函数),然后再将其分配给属性设置器。
Init-only属性解决了这个问题!它们引入了一个init访问器,它是set访问器的一种变体,只能在对象初始化期间调用:
通过这个声明,上面的客户端代码仍然是合法的,但是对FirstName和LastName属性的任何后续赋值都是错误的。这行代码是什么意思?如果ReadOnly也有同样的作用,那么Init-Only属性有什么用处?
目前的一个主要限制是,对象初始化器只能用于可变属性:它们首先调用对象的构造函数(在此情况下为默认的无参数构造函数),然后再将其分配给属性设置器。
Init-only属性解决了这个问题!它们引入了一个init访问器,它是set访问器的一种变体,只能在对象初始化期间调用:
public class Person
{
public string FirstName { get; init; }
public string LastName { get; init; }
}
通过这个声明,上面的客户端代码仍然是合法的,但是对FirstName和LastName属性的任何后续赋值都是错误的。这行代码是什么意思?如果ReadOnly也有同样的作用,那么Init-Only属性有什么用处?