??空合并运算符与 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.
提供了很多选项
当使用 ??
空合并运算符实例化空对象时,与简单的 if == null
语句相比,是否存在任何性能差异、额外的循环等?将对象分配给自身有什么影响?
RedColorBrush = RedColorBrush ?? new SolidColorBrush(renderTarget, Color.Red);
对
if (RedColorBrush == null)
{
RedColorBrush = new SolidColorBrush(renderTarget, Color.Red);
}
根据 this post,??
和 ?:
运算符实际上可能更快(虽然不是很多),因为这些运算符实际上评估为一个值,而 if
语句指向一条不同的路径,可能会导致创建另一个本可以避免的变量。
此外,??
运算符几乎就像 ?:
编辑:它看起来更干净,打字也更快。我讨厌一次又一次地重新输入相同的东西,这就是我喜欢 C# 的原因,因为它为 shorthand.
提供了很多选项