Jeśli używasz pojedynczej & (And) obliczana jest druga część wyrażenia. Może to być złe, jeśli druga część będzie polegać na tym, że pierwsza część jest prawdziwa. Zwykle zawsze używaj & &, ponieważ druga część nie jest oceniana, jeśli pierwsza część jest fałszywa.
Logicznie pojedynczy & wykonuje operację bitową, jak powiedzieli inni, co jest nadal ważne dla porównania/oceny Boole'a. Naprawdę jedyny czas, w którym powinno się używać pojedynczego & (lub |) (lub oceny boolowskiej), jeśli druga ocena powinna zawsze być uruchomiona (jeśli jest to wywołanie funkcji/modyfikator). Jest to zła praktyka i prawdopodobnie dlatego, że książka o tym nie wspomina.
Pojedyncze & są przydatne przy wyliczaniu flagi i maskach bitowych.
Poniższa rzuci wyjątek obj jest zerowy:
bool b = obj != null & obj.IsActive
Ale to będzie działać:
bool b = obj != null && obj.IsActive
To jest złe:
bool b = obj.IsActive && obj.SetActive(false);
bool b = obj.IsActive & obj.SetActive(false);
Operator & jest tutaj zostać.
W języku C# jeden i działa zgodnie z przeznaczeniem. –
Próbowałem go i kompilator narzekał: Operator '&' nie może być zastosowany do operandów typu 'int' i 'bool' – jpoh
To dlatego, że int nie jest wartością 8-bitową. Musisz odrzucić bajt do int, aby działało. – FlySwat