¿Cómo se sustituye el códigoC# - corta cheque por nula
if (customer.Person!=null)
Console.WriteLine(customer.Person.Name);
siguiente con algo como esto
Console.WriteLine(customer.Person.Name?? "unknown");
¿Cómo se sustituye el códigoC# - corta cheque por nula
if (customer.Person!=null)
Console.WriteLine(customer.Person.Name);
siguiente con algo como esto
Console.WriteLine(customer.Person.Name?? "unknown");
No se puede, me temo - no hay nada como null- de Groovy operador de desreferenciación segura :(
Supongo que podría crear un "objeto nulo" para Persona, es decir, una instancia real, pero con todas las propiedades nulas. Entonces podría usar:
Console.WriteLine((customer.Person ?? Person.Null).Name ?? "Unknown");
... pero eso es bastante horrible. (Tampoco está comprobando customer
siendo nula.)
Otra opción sería escribir un método de extensión de la persona:
public static string NameOrDefault(this Person person, string defaultName)
{
return person == null ? defaultName : person.Name ?? defaultName;
}
continuación:
Console.WriteLine(customer.Person.NameOrDefault("Unknown");
podría utilizar el ternary operator:
Console.WriteLine(customer.Person != null ? customer.Person.Name : "unknown");
No es el código más atractivo, pero aún un trazador de líneas.
Editar: No se olvide de usar IsNullOrWhiteSpace, en caso de que trata la lógica aplicación vacía & cadenas nulas las mismas.
¿Qué significa "Person.Null"? – Alexandre
@Alex: Esa sería una propiedad estática en la clase Persona, que devuelve la referencia de persona especial "objeto nulo", que tiene todas sus propiedades nulas. –
@Alex: es una propiedad estática que devuelve una instancia de Persona que representa "ninguna persona". Este es el [patrón de objeto nulo] (http://en.wikipedia.org/wiki/Null_Object_pattern). – Richard