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

Hallo Leute, ich kam über diese Linie. Kann jemand diese Zeile entschlüsseln/gruppieren sie für mich in Klammern?C# - Bedingter Operator Ausdruck (ein paar in einer Reihe)

Schätzen Sie jegliche Hilfe. Vielen Dank im Voraus: D

+1

Ich will nur, dass Code werfen, so schrecklich, wenn aus keinem anderen Grund, als es schwer zu lesen ist. Es wäre viel besser, es mit Paranthesis zu gruppieren, oder besser noch, etwas mit if-Anweisungen zu schreiben. Zum Beispiel 'isGeneric = variableA! = Null? (variableB! = null? false: true): true; ' – Hill

+0

haha ​​... meh .. ich dachte ja .. ich habe diesen Code an meinem Arbeitsplatz getroffen ... werde es definitiv ändern! Danke Bro: D – DriLLFreAK100

+1

Ja, dachte ich. Ich habe einige wirklich furchterregende Dinge in der Codebasis meines Jobs gesehen. – Hill

Antwort

6

Es ist ein ternäres innerhalb eines ternären:

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

Wenn variableA nicht gleich die erste Bedingung auf null, zu überprüfen, sonst true zurück. In der ersten Bedingung geben Sie false zurück, wenn variableB nicht null ist, und geben Sie true zurück, wenn dies der Fall ist.

Man könnte es auch in den folgenden if/else-Anweisungen übersetzen:

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

Wo ist meine Waffe Ich will jemanden töten. das sollte sein "bool isGeneric = (variableA == null || variableB == null)" – ahsant

+0

@ahsant natürlich, aber das ist keine genaue Erklärung des Codes wie geschrieben :). –

+0

vielen dank mann! das hat das Problem hier gelöst: D – DriLLFreAK100

Verwandte Themen