Bac*_*cks 7 .net c# resharper event-handling
例如,实现INotifyPropertyChanged接口:
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null)
handler.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Run Code Online (Sandbox Code Playgroud)
两件事情:
NullReferenceException但是现在,我们可以使用?.运算符进行空值检查.如果我使用它,Resharper是空闲的:

所以,问题是:ProperyChanged如果我使用空条件运算符,我应该将事件复制到局部变量吗?
如果我使用空条件运算符,我应该将事件ProperyChanged复制到局部变量吗?
不,没有必要.实际上,引入空条件运算符的主要原因之一是使用此模式简化代码.它具有与将源值复制到局部变量相同的效果,并且本质上避免了"复制到本地变量"技术旨在解决的"检查和使用"并发陷阱.
请参阅相关帖子:
调用事件,h(args)vs EventName?.Invoke()(几乎完全重复......它确实从稍微不同的角度处理问题)
为什么我应该在调用自定义事件之前检查null?
使用扩展方法提升C#事件 - 这很糟糕吗?
是否有任何理由在提升之前将事件分配给局部变量?
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |