c# - C#中的触发事件

标签 c# events

我注意到在我看到的所有 C# 事件示例中,触发事件的写法如下:

PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null)
    handler(this, new PropertyChangedEventArgs(propertyName));

那和写有什么区别:

if(PropertyChanged != null)
    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));

最佳答案

在您的第二个示例中,您调用了两次 PropertyChanged 的 getter。在多线程环境中,值可能会在调用之间更改。

在您的第一个示例中,通过首先制作本地副本来防止这种情况。

关于c# - C#中的触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824896/

相关文章:

c# - 从使用 .NET 3.5 框架构建的应用程序中将 100 万行和 500 列数据从 SQL 数据库导出到 excel

c# - 如何检测滚动条何时出现? C#

android - 打开时更改 Spinner 内容

c# - EF7(核心)中同一个表的多个关系

c# - 如果 API 已经是多线程的,您是否需要对调用者进行多线程处理? ASP.Net MVC

c# - 从控制台删除特殊字符 - c#

windows - perfmon 性能计数器是否基于与 xperf 使用的 ETW 事件相同的 "under the hood"?

c# - 在 C# 中调用 PLC Tag datachage 上的事件

wpf - WPF 中的类级事件处理程序

c# - 为什么将 List<T> 转换为 IList<T> 会导致性能下降?