我希望在向事件添加或删除事件处理程序时实现一些额外的逻辑。
我知道 .net 中的默认实现最近发生了变化。
我希望我的实现尽可能接近默认实现。
任何人都可以向我指出/提供一些东西来展示编译器如何实现事件吗?
最佳答案
在 C# <4 中,它在 lock
中使用简单的委托(delegate)操作。
在 C# 4+ 中,它通过在循环中调用 Interlocked.CompareExchange 来使用更奇特的无锁算法;在反编译器中查看它以获取更多详细信息。
如果您确定您的类将永远在多个线程上使用,那么您不需要任何这些;您可以简单地使用不同步的委托(delegate)算法。
关于c# - 默认事件添加/删除实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484962/