我发现了在c#中触发事件的不同语法版本,我无法弄清楚它们之间究竟有什么区别:
if (OnMyEvent!= null)
OnMyEvent(this, new MyEventEventArgs());
和
OnMyEvent.Invoke(this, new MyEventEventArgs());
特别是如果我没有任何线程上下文更改?
提前致谢!
答案 0 :(得分:4)
使用Reflector或ildasm,你可以看到这些编译(模数为null
检查)完全相同(调用Invoke()
)。
至于什么是理想的,你应该经常检查null
,并且你会经常看到Invoke()
语法的调用语法。
答案 1 :(得分:1)
尝试通过反射触发事件时,Invoke方法很有用。