c# - 从订阅者取消订阅 .NET 事件

标签 c# .net events reference delegates

有人问我一个关于事件的非常有趣的问题。我认为答案是否定的,但我很好奇是否有我不知道的方法。

在下一个代码示例中,我可以从引用类 B 或其方法 X 中删除订阅吗?

Class1 A = new Class1();
Class2 B = new Class2();

A.DoneIt += B.X;

意思是 A.DoneIt -= B.X; 没有对 A 类的任何访问权限(也没有对 A 类进行反射)。

最佳答案

不可以,您只有在可以访问该事件时才能取消订阅。

委托(delegate)指向一个方向,即指向一个方法。该方法没有指向事件的指针。因此,对要取消订阅的事件的唯一访问是通过定义它的类型实例。

进一步阅读:Events And Delegates

关于c# - 从订阅者取消订阅 .NET 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6938048/

相关文章:

java - 如何在 Java 中处理事件?

iOS。在后台播放/暂停和转发非 iPod 音乐播放器

c# - 模拟点击进入隐藏窗口

c# - 如何在不丢失数据的情况下减少整数数组(二进制数据 [0,1])的长度?

c# - 多次重试的好方法

c# - MSI 和 EXE 安装程序有什么区别,我应该选择哪个?

c# - 具有多个来源的 Sitecore 下拉列表

c# - 如何将 Excel 文件另存为 PDF 并适合页面

c# - 有没有办法告诉 WebBrowser 组件 C# 不要更改原始 HTML?

javascript - Youtube/vimeo iframe 无法在 Firefox 中播放