Если вы используете один & (А), то вычисляется вторая часть выражения. Это может быть плохо, если вторая часть полагается на правду первой части. Обычно всегда используйте &&, поскольку вторая часть не оценивается, если первая часть имеет значение false.
Логично, что single & выполняет побитовую операцию, как говорили другие, которая все еще действительна для логического сравнения / оценки. Действительно, единственный раз, когда должен использоваться одиночный символ & (или |) (или логическая оценка), - это когда всегда выполняется вторая оценка (если это вызов функции / модификатор). Это плохая практика и, вероятно, почему в книге об этом не говорится.
Одиночные и полезны с флагами и битовыми масками.
Следующее исключение obj будет пустым:
bool b = obj != null & obj.IsActive
Но это будет работать:
bool b = obj != null && obj.IsActive
Это плохо:
bool b = obj.IsActive && obj.SetActive(false);
bool b = obj.IsActive & obj.SetActive(false);
Оператор & здесь, чтобы остаться.