If(myEvent!=null)
   myEvent(this,null)还有c#里委托的一种用法myClass.myEvent+=new delegate{ Console.Write("...") }vb.net中有没有对等的写法?

解决方案 »

  1.   

    ...太好了...
    另外,那个vb里delegate可以这样用吗?
    有些简单的语句就省另写方法了
      

  2.   

    delegate的写法在不同版本支持不同。c#支持匿名的方法,但是否有返回值的都叫方法,vb.net 2005中,只提供了匿名函数 Function关键字到了2010提供了Sub的关键字。支持匿名过程。
    例如:
    c#的写法public delegate void VoidDelegate(int i);
    public static void TestDelegate(VoidDelegate vd)
    {
        vd(100);
    }
    static void Main(string[] args)
    {
        TestDelegate(delegate(int i) { Console.WriteLine(i); });
        TestDelegate(i => Console.WriteLine(i));
        Console.ReadKey();
    }对应的vb.net写法为://(2010)支持
    Public Delegate Sub VoidDelegate(ByVal i As Integer)
    Public Sub TestDelegate(ByVal vd As VoidDelegate)
        vd(100)
    End Sub
    Sub Main()
        TestDelegate(Sub(i As Integer) Console.WriteLine(i))
        Console.ReadKey()
    End Sub
    //(2008)支持
        Sub Main()
            TestDelegate(Function(i As Integer)
                             Console.WriteLine(i)
                             Return Nothing
                         End Function
             )
            Console.ReadKey()
        End Sub    Public Delegate Function VoidDelegate(ByVal i As Integer)
        Public Sub TestDelegate(ByVal vd As VoidDelegate)
            vd(100)
        End Sub
      

  3.   

    1. Me
    2. VB.NET 不支持 多行Lambda 跟 匿名委托. VS2008版本(含)一下 , VS2010暂时未研究.所以写法需要修改为:AddHandle myClass.myEvent, AddressOf YourSubSub YourSub()
      Console.Write("...") 
    End Sub
      

  4.   

    VS2008版本(含)一下 ==> VS2008版本(含)以下