Co znajduje się krótki, elegancki, bitowe sposób zapisu ostatniej linii tego kodu C# bez pisania b
dwukrotnie:Zaneguj wartość logiczną opartą na innym logiczna
bool getAsIs = ....
bool b = ....
getAsIs ? b : !b
Co znajduje się krótki, elegancki, bitowe sposób zapisu ostatniej linii tego kodu C# bez pisania b
dwukrotnie:Zaneguj wartość logiczną opartą na innym logiczna
bool getAsIs = ....
bool b = ....
getAsIs ? b : !b
tabela prawda może być wyrażona jako:
getAsIs b getAsIs ? b : !b
--------------------------------
0 0 1
0 1 0
1 0 0
1 1 1
Wynik może być wyrażony jako:
result = (getAsIs == b);
+1: tak proste, jak to możliwe – horgh
+1 dla tabeli prawdy i najprostsza odpowiedź – HappyNomad
W rzeczywistości mogę zmienić mój problem w zakresie tej odpowiedzi. To znaczy, mogę zmienić nazwę "getAsIs" na "targetValue". – HappyNomad
Spróbuj użyć XOR binarnego (^ Operator (C# Reference)):
bool getAsIs = true;
bool b = false;
bool result = !(getAsIs^b);
myślę, że to
var foo = !(getAsIs^b)
Krótki, elegancki, ale na pewno głowy scratcher !
Zastanawiam się, dlaczego chcesz zrobić coś takiego? Tylko z powodu dwukrotnego napisania 'b'? Wydajność? Nie sądzę, żeby którykolwiek z nich był głęboki. – nemo
Dla zwięzłość/czytelność i być może wydajność, ponieważ uzyskanie "b" w moim przypadku faktycznie obejmuje dereferencję trzy właściwości. – HappyNomad
Jestem prawie pewny, że VM/kompilator zoptymalizuje to w jakikolwiek sposób (dereferencje, jak również instrukcje), ale byłoby interesujące, gdyby udowodniono, że jest źle. I bit twiddling z pewnością nie daje żadnych korzyści dla czytelności: D – nemo