2015-12-06 28 views
27

今日は私がこれに似た何かを見ました。なぜこのようにしているのですが、どのようなメリットがありますか?C#のラムダ変数の初期化

+12

を参照してください。この構文はC#6.0の言語バージョンでのみ利用可能であることに注意してください。 –

+0

偉大な新機能は、より簡潔なコードのIMOを追加! –

答えて

24

それは式ボディのプロパティと呼ばれていますし、それは単にゲッターのみのプロパティのショートカットです:このアプローチの利点については

private string m 
{ 
    get { return string.Empty; } 
} 

は、私はあなただけで糖衣構文として扱うことができますねいくつかのキーストロークを節約します。

​​

+5

キーストロークを保存するだけでなく、たくさんある場合は読みやすくなります。 (つまり、読者がこの構文に精通していると仮定します)。 – Bob

5

これは実際には変数の初期化ではない、これは「M」にラムダ式「String.Emptyを」結合するので、いつでもあなたは「m」の参照解除、それは実際にあなたのラムダ式を評価します。さらに読書のために

this github page(セクション「式ボディの関数メンバ」)をチェックしてください

12

それが表現ボディ財産だ、変数ではありません。あなたのケースでは、読み取り専用のプロパティーstring.Emptyを返します。

それはそれは、C#6.0で導入された新機能の一つです

private string m { get { return string.Empty; } } 

と同じです。利点はより短く、より簡潔なコードです。特に、単純な読み取り専用のプロパティがたくさんあるクラスを持っている場合は特にそうです。

あなたはこの構文の実際の例を見たい場合は、this post on Eric Lippert's blogを確認してください。ご覧のとおり、そこには多くの1行のメソッドとプロパティがあります。表現ボディのプロパティやメンバーがなければ、コードはもっと長くなります。それのかなりの部分は中括弧です。