我已经看到越来越多的代码以一种(对我来说)有点奇怪的方式使用合并运算符,对这种用法有什么想法吗?
例如做:
string foo = null;
void bar(){
foo = foo??"hello";
}
代替
string foo = null;
void bar(){
if (foo==null)
foo="hello";
}
对我来说,这看起来像是对空合并运算符的完全合理的使用。请注意,它与第一个代码片段并不完全相同,因为它将以foo
任何一种方式重新分配。如果您实际上使用的是属性而不是变量,这可能很重要- 无论当前值如何,都会调用属性设置器。
它使代码更短、更易读,同时提供了检查空对象的重要功能。
主要的区别因素是它??
是一个运算符,因此可以在其他表达式中使用。至于在哪里使用它——这完全取决于开发人员。
Coalesce Operator 可能会有所帮助的惊人情况。感谢埃里克。 请点击链接和埃里克的回答