2016-02-19 46 views
-2

我期待在協議緩衝區爲C#和there's code like this這是什麼(非lambda?)「=>」C#中的變量定義?

public sealed class FileDescriptor : IDescriptor 
{ 
    // snip 

    /// <value> 
    /// The file name. 
    /// </value> 
    public string Name => Proto.Name; 

    /// <summary> 
    /// The package as declared in the .proto file. This may or may not 
    /// be equivalent to the .NET namespace of the generated classes. 
    /// </summary> 
    public string Package => Proto.Package; 

    // etc. 

=> seems to be the lambda operator,但這並不看起來很像一個拉姆達。這裏發生了什麼?

+0

這是一個重複的,有人問幾天回來爲好,但其舊副本 –

+0

這是C#6.0,這就像創建此:public string Name {get {return Proto.Name; } set {Proto.Name = value; }} – Gusman

+1

投票在這個網站上很奇怪。是的,它是重複的,但它是一個如此愚蠢的問題,當「=>」無法在Stack Overflow上進行搜索時(它只是忽略它),而且微軟自己的文檔甚至沒有提到這一點? –

回答

2

這是C#6表達式成員。他們讓您使用lambda語法指定屬性實現。

此:

public string Name => Proto.Name; 

等同於:

public string Name { get { return Proto.Name; } } 
+0

有形財產沒有實施一個二傳手?只是好奇,我還在學習6.0 – Gusman

+0

@Gusman他們沒有實現一個setter,這是沒有意義的。例如,你可以編寫'public string Name =>「My Name」;'或'public string Name => Proto.Name +「More Name」;'在這種情況下它可以設置什麼? – Kyle

+0

很好的接收,非常感謝信息 – Gusman

相關問題