Tag: 线程thread safety

C#中的空合并运算符(??)是否是线程安全的?

以下代码中是否存在可能导致NullReferenceException的竞争条件? – 要么 – 在空合并运算符检查空值之后但在调用函数之前,是否可以将Callback变量设置为null? class MyClass { public Action Callback { get; set; } public void DoCallback() { (Callback ?? new Action(() => { }))(); } } 编辑 这是一个出于好奇而产生的问题。 我通常不会这样编码。 我并不担心Callback变量会变得陈旧。 我担心从DoCallback抛出exception。 编辑#2 这是我的class级: class MyClass { Action Callback { get; set; } public void DoCallbackCoalesce() { (Callback ?? new Action(() => { }))(); […]