Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 什么';s静态事件处理程序和非静态事件处理程序之间的区别_C#_.net - Fatal编程技术网

C# 什么';s静态事件处理程序和非静态事件处理程序之间的区别

C# 什么';s静态事件处理程序和非静态事件处理程序之间的区别,c#,.net,C#,.net,这两者之间有很大区别吗?实际上没有区别。这意味着,当处理程序是静态的时,作用域中不会有this(与所有静态方法一样)。语义上没有区别,但是使用静态事件处理程序可能(如果不小心的话)导致内存泄漏。有关更多信息,请参阅 我自己也遇到过这个问题,试图使用静态事件处理程序来保持应用程序范围的数据源最新;事件处理程序阻止处置我的BindingSource组件,导致各种奇怪的问题…+1警告,@Bradley。您是否只需要在Dispose()之前取消订阅活动?@dboarman是的,这很重要。对于没有实现ID

这两者之间有很大区别吗?

实际上没有区别。这意味着,当处理程序是静态的时,作用域中不会有
this
(与所有静态方法一样)。

语义上没有区别,但是使用静态事件处理程序可能(如果不小心的话)导致内存泄漏。有关更多信息,请参阅


我自己也遇到过这个问题,试图使用静态事件处理程序来保持应用程序范围的数据源最新;事件处理程序阻止处置我的
BindingSource
组件,导致各种奇怪的问题…

+1警告,@Bradley。您是否只需要在
Dispose()
之前取消订阅活动?@dboarman是的,这很重要。对于没有实现IDisposable的任何东西,您需要非常小心。。。确保静态事件的订阅者始终实现它可能是一个好的实践。还要确保您的对象实际得到处置!(之前有人发现我)同意……使用静态事件时应注意细节。内存泄漏问题是静态事件,而不是静态事件处理程序。这不是一回事。