c# - 如果默认为空,在 C# 中使用空合并运算符是否总是多余的?

标签 c# refactoring simplify null-coalescing-operator

在 C# 中是

x = y ?? null;

总是等同于

x = y;

如果 x 和 y 都是可空类型?

我想不出为什么需要第一行代码而不需要第二行代码的原因。

最佳答案

是的,写下这行

x = y ?? null;

看起来很傻,因为表达式将返回 null如果y为空(所以基本上返回 y )和 y否则。

请记住,空合并运算符在功能上与编写相同:

x = y != null ? y : <whatever operand>

或者,当然(对于那些不熟悉三元运算符的人):

if (y != null)
   x = y;
else
   x = <whatever operand>;

在任何一种情况下,使用 null 作为第二个参数都没有任何用处。您也可以按照帖子中的说明分配变量。

关于c# - 如果默认为空,在 C# 中使用空合并运算符是否总是多余的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23687977/

相关文章:

c# - 只读字段与抽象的 getter-only 属性

refactoring - 重构的目标?

java - 在 Java 类中频繁使用相同的字符串作为 Map 键

graph-algorithm - "simplify"依赖图有算法吗?

Java 8 Optionals,组合语句

c# - 在窗口调整大小时调整 GridView 的大小

c# - 转到 MVC View 时出错 - 命名空间中不存在类型或命名空间名称 'UserModel'

c# - 我应该如何重构一长串 try-and-catch-wrapped 投机操作

java - 重复属性正则表达式简化

c# - LockablePivot 抛出 InvalidCastException