我想这么做:
public Name { get; set { dosomething(); ??? = value } }
是否可以使用自动生成的私有字段? Or is it required that I implement it this way:
private string name; public string Name { get { return name; } set { dosomething(); name = value } }
这是不可能的。无论是自动实现的属性或自定义代码。
一旦您想要在 getter 或 setter 中执行任何自定义操作,就不能再使用 auto 属性了。
根据您的场景,您必须完全实现它。get和 set都必须自动实现或者一起完全实现,而不是两者的组合。
get
set
你可以试试这样:
public string Name { get; private set; } public void SetName(string value) { DoSomething(); this.Name = value; }
从 C # 7开始,您可以为属性的 get和 set访问器使用表达式主体定义。
See more here
private string _name; public string Name { get => _name; set { DoSomething(); _name = value; } }