Events 如何在C中模拟事件数组?(类似于VB6)

Events 如何在C中模拟事件数组?(类似于VB6),events,vb6,c#-2.0,Events,Vb6,C# 2.0,我有一个带有事件处理程序的对象,我想做一些类似于VB6的东西来生成该对象的数组。比如: MyHandler(object sender, MyEventArgs e, int IndexOfObject) 这里有一些小的警告……您必须确保用于传递给处理程序的变量在范围内不会更改。这是因为C支持词法闭包并通过引用使用变量,我相信Jon Skeet可以更好地解释它。只要复制你使用的变量,否则你会得到一些有趣的行为 for (int i = 0; i < observed.Length; ++

我有一个带有事件处理程序的对象,我想做一些类似于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);
                                   };
}

这里有一些小的警告……您必须确保用于传递给处理程序的变量在范围内不会更改。这是因为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);
                                   };
}

@布莱兹:如果你需要一个低级版本,请在问题中提及。@布莱兹:如果你需要一个低级版本,请在问题中提及。