2010-04-21 21 views
6

Esiste un modo per denigificare una stringa in C#?Esiste un modo per denigificare una stringa in C#?

Sarebbe l'equivalente di (se 'x' è una stringa):

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

Credo che spero ci sia qualche operatore che avrebbe funzionato qualcosa come:

string y = #x; 

Wishful pensando, eh?

Il più vicino che ho finora è un metodo di estensione sulla classe stringa:

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

che mi permette di fare:

string y = x.ToNotNull(); 

eventuali miglioramenti che, chiunque?

+1

Evito stringhe nulle per evitare questo problema. Se qualcun altro sta creando le stringhe null, la violenza potrebbe essere necessaria. YMMV. – Greg

+0

Il fatto che il tuo ultimo esempio funzioni è piuttosto spaventoso, dal momento che stai chiamando un metodo su un oggetto per verificare se l'oggetto è = null. So che è dovuto ai metodi di estensione che sono statici, ma è piuttosto sbagliato quando lo si guarda. – ntziolis

+0

stringhe nulle sono malvagie, istanziate con String.Empty ed evitano la logica come sopra. –

risposta

0

Se avete bisogno di questo reguarly, invece di un metodo di estensione si potrebbe prendere in considerazione creare il proprio tipo che si comporta come un Nullable e condivide lo stesso utilizzo in quanto vi è un System.Nullable.GetValueOrDefault(); metodo. Sfortunatamente, è possibile utilizzare System.Nullable solo sui tipi di valore in modo che non sia possibile creare una stringa nullable come standard.

Problemi correlati