c# - ¿Cómo podría evitar== comprobación nula?
null (3)
Aquí está mi código que se usa ampliamente en el proyecto, y me pregunto si puedo refactorizarlo de alguna manera para poder evitar
== null
comprobaciones
== null
todo el tiempo.
ActiveCompany = admin.Company == null ? false : admin.Company.Active
Gracias chicos
Aclamaciones
El operador de fusión nula encadenado con condicional nulo es útil para este tipo de cosas:
ActiveCompany = admin.Company?.Active ?? false
Puede usar el C # 6: Operador condicional nulo
ActiveCompany = admin.Company?.Active == true;
La comparación con
true
al final "convierte" el
bool?
bool
También puede usar el operador de fusión nula para manejar el valor nulo como lo muestra Keith.
Si te encuentras haciendo esto muchísimo, podrías escribir un método de extensión para simplificar el código.
Por ejemplo, suponga que tiene estas clases:
public sealed class Company
{
public bool Active { get; set; }
}
public sealed class MyClass
{
public Company Company;
}
Entonces podrías escribir un método de extensión como este:
public static class MyClassExt
{
public static bool IsActiveCompany(this MyClass myClass)
{
return myClass.Company?.Active ?? false;
}
}
Lo que significaría que puede escribir código como:
var test = new MyClass();
// ...
bool activeCompany = test.IsActiveCompany();
Esto no hace que el código sea mucho más corto, pero algunos podrían pensar que lo hace más legible.