<分区>
我在想而不是
result = result ?? defaultValue;
你可以写
result ?= defaultValue;
我并不是说这是个好主意。
这个运营商有什么优势?
这个运算符有什么缺点?
<分区>
我在想而不是
result = result ?? defaultValue;
你可以写
result ?= defaultValue;
我并不是说这是个好主意。
这个运营商有什么优势?
这个运算符有什么缺点?
最佳答案
我看到的最大潜在优势是它能够提供与 +=
等其他复合运算符相同的优势。考虑以下内容
Method().Field = Method().Field ?? someValue;
如果 Method()
代价高昂或有副作用,则此语句会出现两次。为了防止这种情况发生,您需要将其分成两行
var temp = Method();
temp.Field = temp.Field ?? someValue;
如果您卡在这个位置,这可能会有点乏味。如果 ?=
具有与 +=
相同的保证,即左侧的副作用只发生一次,那么这一行就没有必要了。
Method().Field += someValue; // Method() happens once
Method().Field ?= someValue; // Method() happens once
恕我直言,这是通过简单地使用 ?=
运算符提供的关键优势 ??
。它会很有值(value),但我认为不值得添加到语言中
关于c# - ?= 运算符有哪些优势或劣势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398220/