8

私は C# で匿名デリゲートを頻繁に使用し始めましたが、実際に実行されるコードからコンパイラまたはランタイムが匿名デリゲートを削除するのにどれだけ効率的か疑問に思い始めました。

それらをインライン化し、静的に推定できる再帰的な使用を折りたたむのは十分に賢いですか?

4

3 に答える 3

3

いいえ、C# コンパイラはラムダ式をインライン コードに最適化しません。匿名デリゲートとラムダ式は、常に対応するデリゲートまたは式ツリーを生成します。これは、C# 言語仕様のセクション 6.5 でカバーされています。

匿名メソッド式またはラムダ式は、匿名関数として分類されます (§7.14)。式には型がありませんが、互換性のあるデリゲート型または式ツリー型に暗黙的に変換できます

場合によっては、ラムダがキャッシュされ、将来の使用のために再作成されません。ただし、インライン化されません。

于 2010-06-02T14:20:30.997 に答える
2

ほとんどの場合、いいえ、そうではありません。

ただし、実際のパフォーマンスの問題に気付き、プロファイラーで追跡していない限り、心配する必要はありません。

于 2010-06-02T14:04:25.637 に答える
2

C# コンパイラはそれらを最適化しません。ただし、.NET JIT コンパイラは、十分に単純であれば可能性があります。

于 2010-06-02T14:06:30.433 に答える