检查:null vs default()?

时间:2010-07-12 15:50:33

标签: c# .net-3.5 null

我想检查引用类型是否为null。我看到两个选项(_settings是引用类型FooType):

if (_settings == default(FooType)) { ... }

if (_settings == null) { ... }

这两种表现如何不同?

7 个答案:

答案 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>)来处理的情况参考类型。通常这只是在泛型中,但对于一般情况来说,这是一个很好的习惯。