Si usa un solo & (Y) se evalúa la segunda parte de la expresión. Esto podría ser malo si la segunda parte depende de que la primera parte sea verdadera. Por lo general, siempre use & & ya que la segunda parte no se evalúa si la primera parte es falsa.
Lógicamente, el único & realiza una operación bit a bit como han dicho otros, que sigue siendo válido para la comparación/evaluación booleana. Realmente, el único momento en que se debe usar un solo & (o |) (o una evaluación booleana) es si la segunda evaluación siempre debe ejecutarse (si se trata de una función de llamada/modificador). Esta es una mala práctica y probablemente por qué el libro no lo menciona.
Solo & son útiles con indicadores de posición y máscaras de bits.
A continuación se producirá una excepción de obj es nulo:
bool b = obj != null & obj.IsActive
Pero esto va a funcionar:
bool b = obj != null && obj.IsActive
Esto es malo:
bool b = obj.IsActive && obj.SetActive(false);
bool b = obj.IsActive & obj.SetActive(false);
El operador & está aquí quedarse.
En C# una única y funciona como se pretende. –
Lo probé y el compilador se quejó: El operador '&' no se puede aplicar a los operandos de tipo 'int' y 'bool' – jpoh
Eso es porque int no es un valor de 8 bits. Debes convertir el byte en un int para que funcione. – FlySwat