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

Witajcie, natknąłem się na tę linię. Czy ktokolwiek może odszyfrować tę linię/zgrupować je w nawias?C# - warunkowe wyrażenie operatora (kilka z rzędu)

Doceń każdą udzieloną pomoc. Z góry dzięki: D

+1

Chcę po prostu wyrzucić ten kod jak to jest straszne, jeśli nie z innego powodu niż to jest trudne do odczytania. Znacznie lepiej byłoby pogrupować je z parantezą, a nawet lepiej napisać coś takiego za pomocą instrukcji if. Na przykład 'isGeneric = variableA! = Null? (variableB! = null? false: true): true; ' – Hill

+0

haha ​​... meh ... tak myślałem ... poznałem ten kod w moim miejscu pracy ... na pewno zmieni to na! Dzięki bro: D – DriLLFreAK100

+1

Tak, pomyślałem. Widziałem też naprawdę przerażające rzeczy w bazie kodu mojej pracy. – Hill

Odpowiedz

6

Jest trójargumentowy wewnątrz potrójny:

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

Jeśli variableA nie jest równa null, sprawdź pierwszy warunek, else return true. W pierwszym warunku return false if variableB nie jest pusty i zwraca wartość true, jeśli tak.

Można też przełożyć je na poniższych if/else:

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

Gdzie jest mój pistolet, chcę kogoś zabić. , który powinien być "bool isGeneric = (variableA == null || variableB == null)" – ahsant

+0

@ahsant naturalnie, ale to nie jest dokładne wyjaśnienie kodu jak napisano :). –

+0

wielkie dzięki! to rozwiązało problem tutaj: D – DriLLFreAK100