我是一名VB程序员,正在进入C#。我学会了如何在vb中创建和引发事件,并发现它在C#中没有以相同的方式完成。有没有人遇到过一篇文章,可以帮助我理解如何在C#中做事件,也许可以解释为什么它在VB中有所不同。
由于
答案 0 :(得分:6)
答案 1 :(得分:1)
主要区别在于使用的语法。在下面,他们在CLR中使用完全相同的机制。
但是,VB.NET通过WithEvents
和Handles
提供特殊语法,允许您这样做:
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关键字。 (对不起社论,但我认为这个关键字会导致更多的混乱而不是保存!)