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