我々はsortof、このコードを持っている:VS10究極でイベントハンドラサブスクリプションが13個あるメソッドでは、循環的複雑さはどのように27になりますか?
private void InitializeEvents()
{
this.Event1 += (s,e) => { };
this.Event2 += (s,e) => { };
this.Event3 += (s,e) => { };
this.Event4 += (s,e) => { };
this.Event5 += (s,e) => { };
this.Event6 += (s,e) => { };
this.Event7 += (s,e) => { };
this.Event8 += (s,e) => { };
this.Event9 += (s,e) => { };
this.Event10 += (s,e) => { };
this.Event11 += (s,e) => { };
this.Event12 += (s,e) => { };
this.Event13 += (s,e) => { };
}
コード分析は、 "27の循環的複雑度" を言います。線の1つを削除すると、循環的な複雑さが25になります。
これはどのように可能ですか?
+1 "コード解析ではソースコードではなく、アセンブリ内のILを参照しています.Lambda式をネイティブサポートするILには何もありません" – Lijo
Lambda/Delegateは閉鎖がない場合のみキャッシュされますそれらの上に。そうでなければ、そうではありません。これは(いくつかの)ラムダが高価である理由の1つです。 JIT、割り当て、GCも含まれていますが、それは別の議論です。私は、私が数えることができる "ホット"メソッドで閉鎖とlambdaに関連するより多くのパフォーマンスの問題を修正しました。 –