2008年03月24日

delegateの呼び出し

  
delegate void Function();

Dictionary<string, Function> dict = new Dictionary<string, Function>();
for (int i = 0; i < 100; i++) {
string s = i.ToString();
dict.Add(s, () => Console.WriteLine(s));
}

というコードに対し、

Function f = dict[s];
f();



dict[s]();

は、まったく同じ結果となるが、実行速度は後者の方がわずかに早いようだ。
僕が試した範囲では、Releaseモードでビルドしても、前者のコードが、
後者と同等のコードにコンパイルされることは無かった。

僕は、前者の書き方の方がわかりやすいので好きなんだけど...
場合によっては、後者の書き方をしないといけないな。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51453842