c# – 我可以使用null条件运算符而不是经典事件提升模式吗?

前端之家收集整理的这篇文章主要介绍了c# – 我可以使用null条件运算符而不是经典事件提升模式吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
C#6.0添加了这个新的?运算符现在允许调用这样的事件:
someEvent?.Invoke(sender,args);

现在,根据我的阅读,这个运算符保证someEvent被评估一次.
使用这种调用而不是经典模式是否正确:

var copy = someEvent

if(copy != null)
  copy(sender,args)

我知道certain scenarios以上版本的模式需要额外的锁,但让我们假设最简单的情况.

解决方法

Null-conditional Operators on MSDN.

有一个例子涵盖了你的要求

没有null条件运算符

var handler = this.PropertyChanged;
if (handler != null)
    handler(…)

使用null条件运算符

PropertyChanged?.Invoke(e)

The new way is thread-safe because the compiler generates code to evaluate PropertyChanged one time only,keeping the result in temporary variable.

原文链接:https://www.f2er.com/csharp/91211.html

猜你在找的C#相关文章