[英]C# - constant property is equivalent to lambda expression?
我再次拿起C#,經過Java的長期工作后回來,正如你所料,我對屬性非常感興趣(哦,Java負擔),因此我開始探索它們並想出了這個。
private static float Width {
get { return 0.012f; }
}
經過一些修補,我意識到這也有效(lambda表達式?)。
private static float Width => 0.012f;
現在請幫助這里的Java開發人員了解究竟有什么區別? 前者可以做什么,后者不能,反之亦然。
究竟有什么區別?
兩種方式都定義了一個getter only屬性。 后者只是使用C#6的新功能“Expression Bodied Members” ,特別是“Expression Bodied Properties”,它們允許你使用胖箭頭語法,只是語法糖。
如果你看一下編譯器生成的內容 ,你會看到:
private static float Width
{
get
{
return 0.012f;
}
}
這與您的getter only聲明相同。
這些也可以應用於單線方法:
public int Multiply(int x) => x * x;
有平等的。
private static float Width => 0.012f;
Width
是一個只有getter的屬性,就像你的第一個例子;
區別僅在於語法糖。
參考: https : //github.com/dotnet/roslyn/wiki/Languages-features-in-C%23-6-and-VB-14
這是C#6.0下語言的簡化,稱為“表達身體功能/屬性”。
我們的想法是簡化語法,並允許您以更短的格式設置函數和屬性的值。
Visual Studio雜志上有一篇文章: https : //visualstudiomagazine.com/articles/2015/06/03/c-sharp-6-expression-bodied-properties-dictionary-initializer.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.