C#6.0语句多了新的get和set属性怎么写?

What is the way to write the new get and set properties in C# 6.0 when has more sentences?

在最近的C#版本中属性get和set语句多了写法是:

ObservableCollection<Product> products;
public ObservableCollection<Product> Products
{
   get
   {
     return products;
   }
   set
   {
     products = value;
     OnPropertyChanged("Products");
   }
}

但在 C# 6.0 中情况如何?因为新样式使用了 lambda 运算符:

ObservableCollection<Product> products;
public ObservableCollection<Product> Products
{ 
  get => products; 
  set => products= value; 
}

谢谢。

Auto-Implemented Properties(自动属性)自 c# 3 以来就已存在。

public int Age { get; set; }

C# 6 做了一些改进,其中之一是 Auto-属性 Initializers.

public int Age { get; } = 30;

但我认为你想使用的是另一个特性,表达式体函数成员

public void SayHello(string name) => Console.WriteLine("hello {0}", name);

public string FullName => string.Format("{0} {1}", FirstName, LastName);

表达式体函数成员
我们编写的很多成员的正文由只有一个可以表示为表达式的语句组成。您可以通过编写表达式体成员来减少该语法。它适用于方法和 只读属性

Expression-bodied function members

您不能在您的案例中使用它们,因为您的 属性 不是只读的。

也许这可以帮到你。

更新:

C# 7 引入了您想要的语法,但仅适用于单行表达式。

属性 设置语句(link)
如果您选择自己实现 属性 设置访问器,则可以使用表达式主体定义 单行表达式 为支持 [= 的字段分配一个值59=]。

public class Location
{
   private string locationName;

   public Location(string name) => Name = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   } 
}