Это не побитовый оператор, когда он применяется к логическим операторам.
Это то же самое, что:
someBoolean = someBoolean & someString.ToUpperInvariant().Equals("blah");
Обычно вы видите ярлык и оператор &&
, ноОператор &
также является оператором и при применении к логическим значениям, только он не выполняет бит быстрого доступа.
Вместо этого можно использовать оператор &&
(но оператора &&=
нет) возможно сэкономить на некоторых расчетах.Если someBoolean
содержит false
, второй операнд не будет вычисляться:
someBoolean = someBoolean && someString.ToUpperInvariant().Equals("blah");
В вашем особом случае переменная установлена на true
в строке ранее, поэтому операция исовершенно ненужно.Вы можете просто оценить выражение и присвоить переменной.Кроме того, вместо преобразования строки и последующего сравнения вы должны использовать сравнение, которое обрабатывает так, как вы хотите:
bool someBoolean =
"blah".Equals(someString, StringComparison.InvariantCultureIgnoreCase);