Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VB和C中的事件有什么区别?_C#_Vb.net_Events - Fatal编程技术网

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

C# VB和C中的事件有什么区别?,c#,vb.net,events,C#,Vb.net,Events,我是一名VB程序员,正在努力学习C#。我学习了如何在vb中创建和引发事件,我发现在C#中没有同样的方法。有没有人看过一篇文章,可以帮助我理解如何在C#中执行事件,并解释为什么它在VB中有所不同 谢谢这有帮助吗 差异主要是句法上的 请参阅有关差异的便利参考资料 VB.NET中的事件处理程序是在事件处理程序签名后附加Handling关键字来声明的。在C语言中,您需要使用register with+= 在VB.NET中,您使用RaiseEvent调用事件,在C中,您直接调用委托。读取: C#中的事件

我是一名VB程序员,正在努力学习C#。我学习了如何在vb中创建和引发事件,我发现在C#中没有同样的方法。有没有人看过一篇文章,可以帮助我理解如何在C#中执行事件,并解释为什么它在VB中有所不同

谢谢这有帮助吗


差异主要是句法上的

请参阅有关差异的便利参考资料

VB.NET中的事件处理程序是在事件处理程序签名后附加
Handling
关键字来声明的。在C语言中,您需要使用register with
+=

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

读取:

C#中的事件是一种让类 向客户提供以下信息的通知: 那节课上有些有趣的事情 发生在一个物体上。最 事件的常见用法是 图形用户界面;典型的 中表示控件的类 该接口具有以下事件: 当用户做某事时通知 添加到控件(例如,单击 按钮)

但是,事件不需要仅用于 用于图形界面。事件 提供一种普遍有用的方法 对象发出状态更改的信号 可能对该公司的客户有用 对象事件是一个重要的因素 用于创建类的构建块 可以大量重复使用 不同的节目


其余部分请参阅本文。

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


关键的区别在于VB要求您使用一些关键字而不是加法/减法来连接事件,但为您提供了一个handles关键字来自动将例程连接到事件。当传递委托时,必须使用无意义的AddressOf关键字。(很抱歉这篇社论,但我认为这个关键词造成的混乱比它节省的要多!)

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

但是,VB.NET通过
with events
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#不提供等效项-所有事件都必须通过
事件+=
显式订阅,这更像是VB.NET的
AddHandler
语句。

这个问题解释了VB.NET中
句柄
和C#事件语法之间的区别。谢谢MarkJ非常感谢您的帮助