??空合并运算符与 if == null

?? null-coalescing operator vs if == null

当使用 ?? 空合并运算符实例化空对象时,与简单的 if == null 语句相比,是否存在任何性能差异、额外的循环等?将对象分配给自身有什么影响?

RedColorBrush = RedColorBrush ?? new SolidColorBrush(renderTarget, Color.Red);

if (RedColorBrush == null)
{
    RedColorBrush = new SolidColorBrush(renderTarget, Color.Red);
}

根据 this post???: 运算符实际上可能更快(虽然不是很多),因为这些运算符实际上评估为一个值,而 if 语句指向一条不同的路径,可能会导致创建另一个本可以避免的变量。

此外,?? 运算符几乎就像 ?:

的特例

编辑:它看起来更干净,打字也更快。我讨厌一次又一次地重新输入相同的东西,这就是我喜欢 C# 的原因,因为它为 shorthand.

提供了很多选项