繁体   English   中英

如何避免==空检查?

[英]How could I avoid == null checking?

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

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

多谢你们

干杯

您可以使用C#6: 空条件运算符

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

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

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

ActiveCompany =  admin.Company?.Active ?? false

如果您发现这样做非常麻烦 ,则可以编写扩展方法来简化代码。

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

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();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM