今日は私がこれに似た何かを見ました。なぜこのようにしているのですが、どのようなメリットがありますか?C#のラムダ変数の初期化
答えて
それは式ボディのプロパティと呼ばれていますし、それは単にゲッターのみのプロパティのショートカットです:このアプローチの利点については
private string m
{
get { return string.Empty; }
}
は、私はあなただけで糖衣構文として扱うことができますねいくつかのキーストロークを節約します。
キーストロークを保存するだけでなく、たくさんある場合は読みやすくなります。 (つまり、読者がこの構文に精通していると仮定します)。 – Bob
これは実際には変数の初期化ではない、これは「M」にラムダ式「String.Emptyを」結合するので、いつでもあなたは「m」の参照解除、それは実際にあなたのラムダ式を評価します。さらに読書のために
this github page(セクション「式ボディの関数メンバ」)をチェックしてください
それが表現ボディ財産だ、変数ではありません。あなたのケースでは、読み取り専用のプロパティーstring.Empty
を返します。
それはそれは、C#6.0で導入された新機能の一つです
private string m { get { return string.Empty; } }
と同じです。利点はより短く、より簡潔なコードです。特に、単純な読み取り専用のプロパティがたくさんあるクラスを持っている場合は特にそうです。
あなたはこの構文の実際の例を見たい場合は、this post on Eric Lippert's blogを確認してください。ご覧のとおり、そこには多くの1行のメソッドとプロパティがあります。表現ボディのプロパティやメンバーがなければ、コードはもっと長くなります。それのかなりの部分は中括弧です。
- 1. C#の変数の初期化質問
- 2. グローバル変数のC++初期化
- 3. C++参照変数の初期化リスト
- 4. Cで変数を初期化する#
- 5. GUID変数の初期化
- 6. グローバル変数初期化の最適化
- 7. 初期化変数は
- 8. スモールトーク初期化変数
- 9. C++の初期化
- 10. 遅延初期化、ORM、およびラムダ
- 11. 非定数静的メンバー変数のC++初期化?
- 12. C++ DLLの作成:静的変数の初期化の問題
- 13. C++定数構造体の初期化
- 14. テンプレートクラスのプライベートメンバー変数ベクトルの初期化
- 15. Rubyのインスタンス変数の初期化
- 16. Java:スーパークラスのプライベート変数の初期化
- 17. 変数の初期化の問題が
- 18. Javascriptの変数の初期化構文
- 19. C++でのアトミック変数のスレッドセーフな初期化
- 20. Cでの静的変数宣言/初期化の理解
- 21. C++でのアトミック変数の初期化0x
- 22. 変数の初期化とコンストラクタ
- 23. 変数のRuby DSL初期化
- 24. java配列変数の初期化
- 25. 静的変数の初期化java
- 26. PHP静的変数の初期化
- 27. Pythonクラス変数の初期化
- 28. 非静的変数の初期化
- 29. 問題グローバル変数ヘッダーファイルの配列を初期化するC++
- 30. C++静的変数の初期化とスレッド
を参照してください。この構文はC#6.0の言語バージョンでのみ利用可能であることに注意してください。 –
偉大な新機能は、より簡潔なコードのIMOを追加! –