Поскольку тесты такого рода могут приводить к неожиданным ошибкам в программах, они предпочитают, чтобы булевы выражения были явными (как в Java), вместо выполнения неявного преобразования в bool
.
Это также та же причина, по которой вы не можете использовать int
в качестве логического выражения в C #. Поскольку единственными допустимыми логическими выражениями являются выражения, которые оцениваются непосредственно в bool
, это предотвращает появление непредвиденных ошибок в коде, таких как старая ошибка C:
if (x = 5)
{
// always true
}
Итак, вкратце, он не был включен для удобства чтения и ясности. Да, это кратко сказывается на небольшой стоимости, но выигрыш в уменьшении неожиданных ошибок * на 1013 * больше , чем компенсирует стоимость hainvg для добавления != null
в скобках. ..
(Конечно, вы можете создать неявное преобразование пользовательского типа в bool
, как обходной путь, но вы не можете глобально применить это к любому типу объекта)