2016-05-24 24 views
5
bool isGeneric = variableA != null ? variableB != null ? false : true : true; 

Ciao ragazzi, ho trovato questa frase. Qualcuno può decifrare questa linea/raggrupparli in parentesi per me?C# - espressione dell'operatore condizionale (alcuni di seguito)

Apprezzare qualsiasi aiuto dato. Grazie in anticipo: D

+1

voglio solo buttare fuori quel codice come questo è terribile se per nessun altro motivo che è difficile da leggere. Sarebbe molto meglio raggrupparlo con le parasteiche, o anche meglio scrivere qualcosa di simile con le dichiarazioni if. Ad esempio 'isGeneric = variableA! = Null? (variabileB! = null? false: true): true; ' – Hill

+0

haha ​​... meh .. ho pensato così .. ho incontrato questo codice nel mio posto di lavoro .. lo cambierò sicuramente in quello! Grazie fratello: D – DriLLFreAK100

+1

Sì, ho capito. Ho visto alcune cose davvero terrificanti nella base di codice del mio lavoro anche – Hill

risposta

6

È un ternario all'interno di un ternario:

bool isGeneric = variableA != null 
    ? (variableB != null ? false : true) 
    : (true); 

Se variableA non è null, controllare la prima condizione, altrimenti ritorno vero. Nella prima condizione, restituire se non è nullo e restituire true se lo è.

Si potrebbe anche tradurlo nelle seguenti else if /:

bool isGeneric = false; 
if (variableA != null) 
{ 
    if (variableB != null) 
     isGeneric = false; 
    else 
     isGeneric = true; 
} 
else 
    isGeneric = true; 
+0

Dov'è la mia pistola, voglio uccidere qualcuno. che dovrebbe essere "bool isGeneric = (variableA == null || variableB == null)" – ahsant

+0

@ahsant naturalmente, ma questa non è una spiegazione accurata del codice come scritto :). –

+0

grazie mille amico! che ha risolto il problema qui: D – DriLLFreAK100