C#/。NETリトル七不思議:C#6で表現ボディメンバー:
それで、あなたはこれを使うべきですか?それはすべてスタイルに帰着します。私の意志は、これを一見して明確に理解できる単純な表現と文に限定することです。
(強調、私の。以下の更新1を参照)
上記の記事の概要からの詳細:
そのため、C#6では式でget-onlyプロパティとメソッドボディを指定できるようになりました。これにより、コードをより簡潔にするための非常に単純なメソッドの構文負担を軽減できます。
ただし、すべてのことを考慮して、特定の状況に適合するかどうかを判断してください。式が非常に長いか複雑な場合でも、完全なボディ構文を使用すると読みやすくなります。
また、パフォーマンスに関する別の引用もあります。これは、特定の言語機能を使用することが適切な場合にパフォーマンスの問題が発生する可能性があるためです。
今、あなたは尋ねることができますが、これは実行時にパフォーマンスに影響を及ぼしますか?実際、答えは「いいえ」です。これは、完全な本文を書くのと同じILに展開される単純な構文上の砂糖です。それはないではない、それは単に発現をもたらすシンプルなボディを書いて簡素化するため、ラムダ式の構文を借りている、デリゲートを作成します。
(強調、著者)
更新1: @JörgWMittagによると
これは意味がありません。「これを単純な式と文に限定する」?え?式でのみ、ステートメントでも機能します!
元の作者が間違えた可能性があります。明確にするために、新しく改善されたC#6.0から:
式本体関数は、C#6.0の別の構文簡略化です。これらは、ステートメント本体のない関数です。代わりに、関数宣言に続く式でそれらを実装します。
明確にするために、これはメソッドまたはプロパティをExpressionにしない。Expression 構文を使用して、コード行(および中括弧の数)を削減します。
私の元々の推奨事項は今でも有効です。使用できるからという理由だけでなく、コードをわかりやすく理解しやすくするときに使用してください。