簡體   English   中英

C# - 常量屬性相當於lambda表達式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM