我不會說他們改變了它,我會說他們給了我們一些新的語法選項。您仍然可以使用「舊」方式來聲明getter和setter,但現在也有一種更實用的編程風格。在C#6微軟使用的getter屬性只有在做表情已經介紹:
public int SomeProp => someMethod();
C#7增強了這種支持允許它被用於getter和setter。其中一個很好的特性是新的「throw表達式」功能,它使我們能夠製作一些簡潔的語法。例如,在你不得不這樣做之前。
private string _name;
public string Name
{
get
{
return _name;
}
set
{
if (value == null)
throw new ArgumentNullException(nameof(Name));
_name = value;
}
}
現在,我們可以簡化這個到:
private string _name;
public string Name {
get => _name;
set => _name = value ?? throw new ArgumentNullException(nameof(Name));
}
當然,你可以做拋表達即使不使二傳手拉姆達但你可以看到,對於簡單的事情,它使語法非常簡潔。
正如任何事情,使用是很有道理的給你,是最可讀的誰將會編碼應用程序中的人的語法。微軟一直在推動爲C#增加更多功能的編程風格功能,這只是另一個例子。如果您發現它很醜陋/令人困惑/不需要,您可以完全用現有方法完成您需要的一切。又如,爲什麼我們有while
和do while
循環?我可以誠實地說我在我的職業生涯中曾經使用過一次do while
循環。一個while
循環可以完成一切do while
可以只是用不同的語法。但是,有時您會意識到使用do while
將使您的代碼更具可讀性,所以爲什麼不使用該代碼?