web-dev-qa-db-ja.com

C#6.0の式本体関数メンバーの効率とパフォーマンス

新しいC#6.0では、ラムダ式を使用してメソッドとプロパティを定義できます。

たとえば、このプロパティ

public string Name { get { return First + " " + Last; } }

これで、次のように定義できます。

public string Name => First + " " + Last; 

ここにある式ボイド関数のメンバーに関する情報: http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx

新しい構文を使用するときにオーバーヘッドがあるかどうか誰かが知っていますか?アプリケーションの速度を低下させる(または効率を改善する)ことができますか、それとも問題ではありませんか?

45
Landeeyo

新しいC#6.0では、ラムダ式を使用してメソッドとプロパティを定義できます。

いいえ、できません。トークン=>を使用するという点で、ラムダ式のようにlooksの構文を使用して、メソッドとプロパティの本体を定義できます。

ただし、重要なことに、これはnotが関係するデリゲート型があることを意味します。 (ラムダ式は、式ツリーまたはデリゲート型に変換されるコンテキストでのみ許可されます。)

これは純粋に構文上の砂糖です。 2つのサンプルコードスニペットは、まったく同じILにコンパイルされます。 justは、プロパティゲッターまたはメソッドの本体を表す別の方法です。

74
Jon Skeet

それらは同じILにコンパイルされます。これを行い、ildasmを使用してILを抽出することにより、いつでもこれを自分でテストできます。

9
tolanj