В чем причина null
не оценивается false
в условных выражениях?
Я сначала подумал о назначениях, чтобы избежать ошибки использования =
вместо ==
, но это может быть легко запрещено компилятором.
if (someClass = someValue) // cannot convert someClass to bool. Ok, nice
if (someClass) // Cannot convert someClass to bool. Why?
if (someClass != null) // More readable?
Я считаю довольно разумным предположить, что null
означает false
. Есть и другие языки, которые используют это тоже, и из-за этого у меня не было ошибки.
Изменить: И я, конечно, ссылаюсь на ссылочные типы.
Хороший комментарий Даниэля Эрвикера о ошибке назначения... Это компилируется без предупреждения, потому что он оценивает bool
:
bool bool1 = false, bool2 = true;
if (bool1 = bool2)
{
// oops... false == true, and bool1 became true...
}