Но я хотел бы знать, есть ли сценарий, где если принимает какое-либо значение
кроме bool.
Нет, нет и вроде
if-else (C # Reference)
Оператор if определяет, какой оператор выполнять на основе значения
логическое выражение n
Следующее работает только потому, что результатом является логическое значение
if (a=Char.IsLower(c))
это эквивалентно
a=Char.IsLower(c);
if (a)
То же, что и следующие a
и b
становятся результатом Char.IsLower(c)
bool a = false;
bool b = false;
a = b = Char.IsLower(c)
... Результат должен быть равен bool (конец истории)
Предостережение (если вы хотите так его называть) допускает обнуление и Поднятые операторы . Поднятые операторы - это операторы, которые работают над обнуляемыми типами, «поднимая» операторы, которые уже существуют в ненулевой форме, однако они все равно должны приравниваться к логическому выражению.
?int bob = null
if(bob > 3) { ... }
Дополнительные ресурсы
Из C # спецификации
12.4.8 Поднятые операторы