这是我在项目中广泛使用的代码,我想知道我是否可以以某种方式重构它,以便我可以一直避免== null
检查?
ActiveCompany = admin.Company == null ? false : admin.Company.Active
谢谢大家
干杯
可以使用C# 6: 空条件运算符
ActiveCompany = admin.Company?.Active == true;
最后与true
的比较将bool?
"转换"为bool
.您还可以使用 null 合并运算符来处理 null 值,如 Keith 所示。
用空条件链接的空合并运算符对于这种事情很有用:-
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();
这不会使代码更短,但有些人可能会认为它使代码更具可读性。