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

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

谢谢

这有帮助吗?

VB.NET与C# – 代表/事件

主要区别在于使用的语法。 在下面,他们使用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语句。

区别主要是句法。

看到这个有关差异的方便参考。

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

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

阅读:

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

C#中的事件是一种类,当对象发生一些有趣的事情时,类可以向该类的客户端提供通知。 最常见的事件用途是图形用户界面; 通常,表示界面中控件的类具有在用户对控件执行某些操作时通知的事件(例如,单击按钮)。

但是,事件不必仅用于图形界面。 事件为对象提供了一种通常有用的方式,用于指示可能对该对象的客户端有用的状态更改。 事件是创建可以在大量不同程序中重用的类的重要构建块。

请参阅文章。

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

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