2016-10-27 10 views
30

このコードは何を意味していますか?C#のプロパティで "=>"演算子の意味は何ですか?

public bool property => method(); 
+0

おそらくラムダ演算子ではないラムダ演算子 – meJustAndrew

+1

@meJustAndrewを検索する必要があります。これは、式のボディメンバー、*新しい*言語機能です。 –

+3

"式身体のプロパティ"を検索します。 –

答えて

44

これは表現ボディのプロパティ、あなたはラムダ式を作成するのと同じ方法で計算されたプロパティを作成することができますC#6で導入された計算されたプロパティの新しい構文です。この構文は

public bool property { 
    get { 
     return method(); 
    } 
} 

同様の構文に相当しすぎて、メソッドのために働く:式ボディのプロパティをだ

public int TwoTimes(int number) => 2 * number; 
+3

正しい(つまり、googlable)名前は "式が付いたプロパティ" –

+0

答えの唯一の説明です。 – mybirthname

+2

私が初めて見たのは、これに対する私の最初の反応は*なぜ?*。私はいつでもそのプロパティを見て、あなたが必要としていることを知っている、任意のラムダ型の構文* ...おそらく、レドモンドでの遅い日 – Liam

9

を。例えば、MSDNを参照してください。

public override string ToString() => string.Format("{0}, {1}", First, Second); 
+2

リンクは良い答えではなく、コードや説明の一部をリンクから追加します。明日はリンクの場所を変更することができます – mybirthname

3

それは表現ボディ簡素化です: これはボディの機能も可能である

public bool property 
{ 
    get 
    { 
     return method(); 
    } 
} 

発現のためだけの省略形です。

public string Text => 
    $"{TimeStamp}: {Process} - {Config} ({User})"; 

参考: https://msdn.microsoft.com/en-us/magazine/dn802602.aspx

4

=>は、expression bodyです。基本的には、getterでプロパティを書き込むための、より短くてきれいな方法です。

public bool MyProperty { 
    get{ 
     return myMethod(); 
    } 
} 

はそれがはるかに簡単で読みやすいのですが、あなたはあなただけは式本体についての特定のドキュメントを見つけますC#6とhereから、この演算子を使用することができます

public bool MyProperty => myMethod(); 

に変換されます。

6

いくつかは、これを述べたように、新たな機能が、彼らはゲッターとセッターとそれを使用するためにC# 7.0にその使用を拡張し、C#6に最初に持ち込まれ、あなたはまた、このような方法で表現ボディの構文を使用することができます。

static bool TheUgly(int a, int b) 
{ 
    if (a > b) 
     return true; 
    else 
     return false; 
} 
static bool TheNormal(int a, int b) 
{ 
    return a > b; 
} 
static bool TheShort(int a, int b) => a > b; //beautiful, isn't it? 
関連する問題