【问题标题】:How to simulate array of events in C#? (like in VB6)如何在 C# 中模拟事件数组? (如在 VB6 中)
【发布时间】:2010-04-05 10:28:32
【问题描述】:

我有一个带有事件处理程序的对象,我想制作类似于 VB6 的东西来制作该对象的数组。比如:

MyHandler(object sender, MyEventArgs e, int IndexOfObject)

【问题讨论】:

    标签: events vb6 c#-2.0


    【解决方案1】:

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

    【讨论】:

    • @blez:如果您需要低级版本,请在问题中提及。
    【解决方案2】:
    observed[idx].WhateverEvent += delegate(sender, e)
    {
        // Code that was in Myhandler, can access idx
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2010-10-17
      • 2020-09-14
      • 1970-01-01
      相关资源
      最近更新 更多