如何避免==空检查?

时间:2019-08-28 10:56:25

标签: c# null

这是我的代码,该代码在项目中广泛使用,我想知道我是否可以以某种方式重构此代码,这样我就可以一直避免== null检查吗?

 ActiveCompany = admin.Company == null ? false : admin.Company.Active

谢谢大家

欢呼

3 个答案:

答案 0 :(得分:15)

您可以使用C#6:Null-conditional Operator

ActiveCompany = admin.Company?.Active == true;

最后与true的比较将bool?转换为bool。您还可以使用空合并运算符来处理空值,如Keith所示。

答案 1 :(得分:12)

与null条件链接的null合并运算符对于这种情况很有用:-

ActiveCompany =  admin.Company?.Active ?? false

答案 2 :(得分:1)

如果发现自己做的很糟糕,可以编写扩展方法来简化代码。

例如,假设您具有以下类:

public sealed class Company
{
    public bool Active { get; set; }
}

public sealed class MyClass
{
    public Company Company;
}

然后您可以编写一个扩展方法,如下所示:

public static class MyClassExt
{
    public static bool IsActiveCompany(this MyClass myClass)
    {
        return myClass.Company?.Active ?? false;
    }
}

这意味着您可以编写如下代码:

var test = new MyClass();
// ...
bool activeCompany = test.IsActiveCompany();

这不会使代码变得更短,但是有些人可能认为它使代码更具可读性。