1
我有一個事件處理程序的對象,我想做出類似於VB6的東西來創建該對象的數組。例如:如何模擬C#中的事件數組? (如在VB6中)
MyHandler(object sender, MyEventArgs e, int IndexOfObject)
我有一個事件處理程序的對象,我想做出類似於VB6的東西來創建該對象的數組。例如:如何模擬C#中的事件數組? (如在VB6中)
MyHandler(object sender, MyEventArgs e, int IndexOfObject)
有一些小問題需要注意,您必須確保用於傳遞給處理程序的變量在範圍內不發生更改。這是因爲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);
};
}
observed[idx].WhateverEvent += delegate(sender, e)
{
// Code that was in Myhandler, can access idx
};
呃,但在C#2.0 – blez 2010-04-05 10:45:30
@blez:如果您需要下級版本,提到它的問題。 – Richard 2010-04-05 11:16:11