这是我的代码,该代码在项目中广泛使用,我想知道我是否可以以某种方式重构此代码,这样我就可以一直避免== null
检查吗?
ActiveCompany = admin.Company == null ? false : admin.Company.Active
谢谢大家
欢呼
答案 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();
这不会使代码变得更短,但是有些人可能认为它使代码更具可读性。