2010-04-05 34 views

回答

3

有一些小問題需要注意,您必須確保用於傳遞給處理程序的變量在範圍內不發生更改。這是因爲C#支持詞法關閉並通過引用使用變量(我相信Jon Skeet可以更好地解釋它)。只要複製你使用的變量,或者你會得到一些有趣的行爲。

for (int i = 0; i < observed.Length; ++i) 
{ 
    int idx = i; 
    observed[idx].WhateverEvent += delegate(object sender, EventArgs e) 
            { 
             MyHandler(sender, e, idx); 
            }; 
} 
+0

呃,但在C#2.0 – blez 2010-04-05 10:45:30

+3

@blez:如果您需要下級版本,提到它的問題。 – Richard 2010-04-05 11:16:11

3
observed[idx].WhateverEvent += delegate(sender, e) 
           { 
            // Code that was in Myhandler, can access idx 
           };