c# - ?= 运算符有哪些优势或劣势?

标签 c# language-features

<分区>

我在想而不是

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/

相关文章:

Python:在运行时创建生成器

sdk - 充分利用 CUDA 5 的功能需要哪些卡和计算能力

C#:没有从 Class<Child> 到 Class<Base> 的隐式转换

c# - 如何向编码的 UI 测试 (Windows Phone 8.1) 项目添加功能(在 C# 中)

c# - 使用 .NET MVC Controller 操作作为 HTML <img> 的源

c# - Entity Framework 可以通过ID自动更新属性导航吗

c# - 每次对其执行操作时,SqlDataReader 对象都会抛出异常

c# switch 语句比 vb.net 'case' 更受限制

c# - C# 中的默认非索引器属性

c# - 隐藏成员函数不起作用