VB.NET中的C#event + = delegate {}等效

时间:2014-04-26 11:01:02

标签: c# vb.net delegates equivalent

好吧,我正在使用developer fusion翻译C# into VB.NET,并且API没有翻译我那部分...

owner.IsVisibleChanged += delegate
            {
                if (owner.IsVisible)
                {
                    Owner = owner;
                    Show();
                }
            };

我知道+= is for AddHandler owner.IsVisibleChanged, AdressOf (delegate??),那么,这部分是等同的吗?

提前致谢。

PD:我没有足够的资金来购买 .NET Reflector :(我浪费了审判。

1 个答案:

答案 0 :(得分:5)

这里有两个部分。

  1. 匿名方法。 C#中的delegate大致对应于VB中的匿名Sub

  2. 添加事件处理程序。 C#中为+=,VB中为AddHandler

  3. 把它放在一起:

    AddHandler owner.IsVisibleChanged, _
        Sub()
            …
        End Sub
    

    顺便提一下,您提到的AddressOf运算符在VB中用于引用(非匿名)方法而不调用它。因此,如果您要引用现有的命名方法而不是匿名方法,则可以在此处使用它。