在 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 中没有任何新内容可以改进这一点。