代码之家  ›  专栏  ›  技术社区  ›  lance

检查:null vs default()?

  •  9
  • lance  · 技术社区  · 14 年前

    我想检查引用类型是否为null。我看到两个选项(\u设置为参考类型FooType):

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

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

    6 回复  |  直到 14 年前
        1
  •  32
  •   Tim Taurit    8 年前

    没有区别。任何引用类型的默认值都是 null .

    default 关键字: https://msdn.microsoft.com/en-us/library/25tdedf5.aspx

        2
  •  8
  •   Andrey    14 年前

    没有区别,但第二个更具可读性。最佳使用场所 default return default(T);

        3
  •  3
  •   Chuck Conway    14 年前

    我的理解是他们没有什么不同。它只在处理值类型时才重要。

        4
  •  3
  •   Jerod Houghtelling    14 年前

    我肯定会去和空的具体检查。因为如果 _settings 类的任何更改都可能会遇到引用问题。至少,它需要对打破开放/关闭策略的代码进行更改。

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

    这样更安全更干净。

        5
  •  2
  •   Mau    14 年前

    没什么不同但我觉得

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

    更清晰。

        6
  •  1
  •   Randolpho    14 年前

    如前所述,没有区别。。。但你呢 可以 想用吗 default(<type>) 引用类型。通常这只是泛型,但对于一般情况来说,这是一个好习惯。

        7
  •  1
  •   Serve Laurijssen    4 年前

    既然我们不再需要将类型传递给default,那么首选default。

    • 它同样可读

    • 它可以用于泛型