Boolean en C# son variables de 1 byte. Y debido a que bool son accesos directos para la clase booleana, esperaría que las operaciones &= , |= se hayan anulado para permitirles trabajar con los tipos booleanos, pero no estoy tan seguro al respecto. No hay nada como &&= o ||= para ser usado.
Aquí está mi pregunta, haciendo algo como:
bool result = condition; result &= condition1; result &= condition2;funcionará, pero ¿es solo porque el bool será 00000000 para falso y 00000001 para verdadero o porque debajo de la clase bool usará algo como &&= y ||= cuando se llame a los anteriores? ¿Es realmente seguro usar las notaciones anteriores o es mejor usar
bool result = condition; result = result && condition1; result = result && condition2;para evitar cualquier comportamiento extraño?
Tenga en cuenta que las condiciones podrían ser algo como A >= B o cualquier otra verificación posible que devuelva un bool.
Por lo que puedo leer en esta publicación SO , la única diferencia real entre los operadores bit a bit y los operadores lógicos en booleanos es que este último no evaluará el operando del lado derecho si el operando del lado izquierdo es false .
Eso significa que si tiene dos valores booleanos, no habrá mucha diferencia. Si tiene dos métodos, el último no se ejecuta con operadores lógicos, pero sí con operadores binarios.
Según la documentación (énfasis mío):
Una expresión que utiliza el operador de asignación &=, como
x &= yes equivalente a
x = x & yexcepto que x solo se evalúa una vez. El operador & realiza una operación AND lógica bit a bit en operandos integrales y AND lógica en operandos booleanos .
Y similar para |= .