2013-06-03 9 views
7

Ho la seguente dichiarazione:Come semplificare questo C#, se/sintassi altro

serverCard.Details = !String.IsNullOrEmpty(card.Details) ? card.Details : serverCard.Details; 

voglio controllare e vedere se card.Details è nullo o vuoto ... in caso contrario, scrivere il valore. C'è qualche sintassi che mi consente di escludere l'altro condizionale?

+2

che non avrebbe molto senso. Pensaci, tralasciando la parte else lascia un vuoto nel tuo codice, ovvero cosa stai cercando di assegnare? – Polity

+0

L'unico cambiamento che farei sarebbe rimuovere il '!' E scambiare i valori condizionali semplicemente per il flusso di lettura. –

risposta

16

Certo, basta usare un normale if:

if(!String.IsNullOrEmpty(card.Details)) 
    serverCard.Details = card.Details 
+1

Questa è l'opzione migliore IMO ... L'altro si sente semplicemente inutile in questo caso. – SlxS

+0

+1 proprio quello che pensavo. Pulito e semplice –

+4

non può fare +1 qui, sostenendo per {} sempre. – sschrass

5

È sempre possibile utilizzare il vecchio if dichiarazione:

if(!String.IsNullOrEmpty(card.Details)) 
{ 
    serverCard.Details = card.Details; 
} 

penso che l'operatore ternario non è necessario qui.

0

È possibile scrivere un metodo di estensione per String per verificare se nullOrEmpty. Il regolare se poi sarebbe più breve

Metodo di estensione:

public static bool IsNullOrEmpty(this string str) 
{ 
    return string.IsNullOrEmpty(str); 
} 

public static bool IsNullOrWhiteSpace(this string str) 
{ 
    return string.IsNullOrWhiteSpace(str); 
} 

Il caso:

if(!card.Details.IsNullOrWhiteSpace()) 
    serverCard.Details = card.Details 

Il metodo di estensione funzionerà per ogni corda.