2010-04-21 13 views
6

¿Hay una forma abreviada de denulificar una cadena en C#?¿Hay una forma abreviada de denulificar una cadena en C#?

Sería el equivalente a (si 'x' es una cadena):

string y = x == null ? "" : x; 

Creo que estoy esperando que hay algún operador que trabajaría algo como:

string y = #x; 

Wishful pensando, ¿eh?

El más cercano que tengo hasta ahora es un método de extensión de la clase string:

public static string ToNotNull(this string value) 
{ 
    return value == null ? "" : value; 
} 

que me permite hacer:

string y = x.ToNotNull(); 

Cualquier mejora en que, cualquiera?

+1

Evito cadenas nulas para evitar este problema. Si alguien más está creando cadenas de caracteres nulas, la violencia podría ser necesaria. YMMV. – Greg

+0

El hecho de que su último ejemplo funcione es bastante aterrador, ya que llama a un método en un objeto para verificar si el objeto es = nulo. Sé que es debido a que los métodos de extensión son estáticos, pero se siente un poco mal al mirarlo. – ntziolis

+0

cadenas nulas son malvadas, crea una instancia con String.Empty y evita la lógica como se indicó anteriormente. –

Respuesta

0

Si necesita esta regularidad, en lugar de un método de extensión es posible que desee considerar la creación de su propio tipo que se comporta como un anulable y comparte el mismo uso ya que hay un System.Nullable.GetValueOrDefault(); método. Desafortunadamente, solo puede usar System.Nullable en los tipos de valor, por lo que no puede convertir una cadena anulable como estándar.

Cuestiones relacionadas