在最新的C#版本的属性中,获取并设置更多语句的方式是:
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;
}
谢谢。
答案 0 :(得分:1)
自c#3开始,自动实现的属性(自动属性)就已经存在。
public int Age { get; set; }
C#6进行了一些改进,其中之一是自动属性初始化程序。
public int Age { get; } = 30;
但是我认为您要使用的是另一个功能, Expression-bodyd函数成员
public void SayHello(string name) => Console.WriteLine("hello {0}", name);
public string FullName => string.Format("{0} {1}", FirstName, LastName);
表达主体函数成员
我们编写的许多成员的主体由只有一个语句组成,可以表示为表达式。您可以通过编写表达式主体成员来减少该语法。它适用于方法和只读属性。
Expression-bodied function members
在您的情况下,您不能使用它们,因为您的属性不是只读的。
也许这可以帮助您。
How to implement INotifyPropertyChanged in C# 6.0?
更新:
C#7引入了所需的语法,但仅适用于单行表达式。
属性集声明(link)
如果您选择自己实现属性集访问器,则可以为单行表达式使用表达式主体定义,该表达式将值分配给支持该属性的字段。
public class Location
{
private string locationName;
public Location(string name) => Name = name;
public string Name
{
get => locationName;
set => locationName = value;
}
}