我想检查引用类型是否为null。我看到两个选项(_settings是引用类型FooType):
if (_settings == default(FooType)) { ... }
和
if (_settings == null) { ... }
这两种表现如何不同?
答案 0 :(得分:19)
没有区别。任何引用类型的默认值为null
。
MSDN的default
关键字的C#参考页:https://msdn.microsoft.com/en-us/library/25tdedf5.aspx。
答案 1 :(得分:5)
没有区别,但第二个更具可读性。使用default
的最佳位置是处理泛型时。常用代码为return default(T);
答案 2 :(得分:2)
现在我们不再需要将类型传递给默认值,默认是首选。
同样可读
它可以用于值和引用类型
可以在泛型中使用
if (_settings == default) { ... }
答案 3 :(得分:1)
我的理解是他们并没有什么不同。只有当你处理价值类型时才重要。
答案 4 :(得分:1)
没有什么不同但我认为
if (_settings == null) { ... }
更清楚。
答案 5 :(得分:1)
我肯定会对null进行特定检查。因为如果_settings
类的类型发生变化,您可能会遇到引用问题。至少需要更改打开/关闭政策的代码。
if( _settings == null ) {...}
这个IMO更安全,更清洁。
答案 6 :(得分:0)
正如已经提到的,没有区别......但是可能想要使用default(<type>)
来处理不的情况参考类型。通常这只是在泛型中,但对于一般情况来说,这是一个很好的习惯。