在 C#9 和 C#10 中编写 属性 的最简单和最简洁的形式
simplest and most concise form to write a property in C#9 and c#10
考虑到C#9甚至C#10的特性,写一个属性最简单最简洁的形式是什么?
是否可以不使用支持字段?
string fName;
public string Name { get { return fName; } set { SetPropertyValue<string>(nameof(Name), ref fName, value); } }
public string Name {get;}
应该是最简单的了。
如果您需要 WPF PropertyChanged 支持,我通常会这样做
private string name;
public string Name {get => name; set => Set(ref name, value); }
private void Set<T>(ref T field, T value, [CallerMemberName]string caller = "")
{
field = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(caller ));
}
可选择在 Set 方法中添加一个比较,以便仅在新值不等于旧值时引发事件。据我所知,c# 9 或 10 中没有任何新内容可以改进这一点。
考虑到C#9甚至C#10的特性,写一个属性最简单最简洁的形式是什么?
是否可以不使用支持字段?
string fName;
public string Name { get { return fName; } set { SetPropertyValue<string>(nameof(Name), ref fName, value); } }
public string Name {get;}
应该是最简单的了。
如果您需要 WPF PropertyChanged 支持,我通常会这样做
private string name;
public string Name {get => name; set => Set(ref name, value); }
private void Set<T>(ref T field, T value, [CallerMemberName]string caller = "")
{
field = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(caller ));
}
可选择在 Set 方法中添加一个比较,以便仅在新值不等于旧值时引发事件。据我所知,c# 9 或 10 中没有任何新内容可以改进这一点。