Grz*_*cki 7 .net c# events c#-6.0
C#6.0添加了这个新的?.运算符,现在允许调用这样的事件:
someEvent?.Invoke(sender, args);
Run Code Online (Sandbox Code Playgroud)
现在,根据我的阅读,这个运算符保证someEvent被评估一次.使用这种调用而不是经典模式是否正确:
var copy = someEvent
if(copy != null)
copy(sender, args)
Run Code Online (Sandbox Code Playgroud)
我知道某些情况下上面版本的模式需要额外的锁,但让我们假设最简单的情况.
MyD*_*ons 11
是
有一个例子涵盖了你的要求
没有null条件运算符
var handler = this.PropertyChanged;
if (handler != null)
handler(…)
Run Code Online (Sandbox Code Playgroud)
使用null条件运算符
PropertyChanged?.Invoke(e)
Run Code Online (Sandbox Code Playgroud)
新方法是线程安全的,因为编译器只生成一次评估PropertyChanged的代码,将结果保存在临时变量中.
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |