Рассмотрим следующий фрагмент:
Код: Выделить всё
void Main()
{
Console.WriteLine("Results when bitwise or is used: ");
Console.WriteLine(FuncA() | FuncB());
Console.WriteLine("Results when or operator is used: ");
Console.WriteLine(FuncA() || FuncB());
}
bool FuncA()
{
Console.WriteLine("Function A is executing.");
return true;
}
bool FuncB()
{
Console.WriteLine("Function B is executing.");
return false;
}
Результаты при использовании побитового или:
Функция A выполняется.
Функция B выполняется.
Верно
Результаты при использовании оператора или:
Выполняется функция A .
Верно
Мой вопрос заключается в том, почему компилятор этого не сделал. оптимизировать использование побитового оператора? Так же, как и для оператора C# or, параметры уже известны компилятору, почему бы ему не обработать его таким же образом для побитового оператора or?
Подробнее здесь: https://stackoverflow.com/questions/163 ... in-c-sharp
Мобильная версия