VB和C#中的事件有什么区别?

时间:2010-03-30 16:54:20

标签: c# vb.net events

我是一名VB程序员,正在进入C#。我学会了如何在vb中创建和引发事件,并发现它在C#中没有以相同的方式完成。有没有人遇到过一篇文章,可以帮助我理解如何在C#中做事件,也许可以解释为什么它在VB中有所不同。

由于

5 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

主要区别在于使用的语法。在下面,他们在CLR中使用完全相同的机制。

但是,VB.NET通过WithEventsHandles提供特殊语法,允许您这样做:

Dim WithEvents button1 As Button

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyButton.Click 
    ' Handle button click
End Sub

C#没有提供平等 - 所有事件都必须通过event +=明确订阅,这更像是VB.NET的AddHandler声明。

答案 2 :(得分:0)

差异主要是句法。

请参阅this有关差异的方便参考。

声明VB.NET中的事件处理程序,并在事件处理程序签名后附加Handling关键字。在C#中,您需要使用+=注册它。

在VB.NET中,您使用RaiseEvent调用事件,在C#中直接调用代理。

答案 3 :(得分:0)

阅读:

http://msdn.microsoft.com/en-us/library/aa645739(VS.71).aspx

  

C#中的事件是类的一种方式   向客户提供通知   那课时有些有趣的事情   发生在一个物体上。最多   熟悉的事件用途是   图形用户界面;通常情况下,   代表控件的类   界面有事件   当用户做某事时通知   控件(例如,单击一个   按钮)。

     

但是,不需要仅使用事件   用于图形界面。活动   提供一种通用的方法   对象发出状态变化的信号   可能对客户有用   宾语。事件是重要的   用于创建类的构建块   可以大量重复使用   不同的节目。

请参阅文章。

答案 4 :(得分:0)

可以找到here语法中一些关键差异的快速通用参考。搜索“事件”以进入该部分。

主要区别在于VB要求您使用一些关键字而不是加/减来连接事件,但是会为您提供一个句柄关键字,自动将例程连接到事件。在传递委托时,您必须使用无意义的AddressOf关键字。 (对不起社论,但我认为这个关键字会导致更多的混乱而不是保存!)