我想这样做:
public Name
{
get;
set
{
dosomething();
??? = value
}
}
是否可以使用自动生成的私有字段?
或者我需要这样实现它:
private string name;
public string Name
{
get
{
return name;
}
set
{
dosomething();
name = value
}
}
答案 0 :(得分:85)
如果您想在getter或setter中执行任何自定义操作,则无法再使用自动属性。
答案 1 :(得分:26)
您可以尝试这样的事情:
public string Name { get; private set; }
public void SetName(string value)
{
DoSomething();
this.Name = value;
}
答案 2 :(得分:14)
这是不可能的。自动实现的属性或自定义代码。
答案 3 :(得分:5)
根据您的方案,您需要完全实现它。 get
和set
都必须自动实现或完全一起实现,而不是两者的组合。
答案 4 :(得分:2)
从C#7开始,您可以为属性的get
和set
访问器使用表达式主体定义。
private string _name;
public string Name
{
get => _name;
set
{
DoSomething();
_name = value;
}
}