Ничего!= Null - или нет?
Недавно в предыдущем проекте я встретил своеобразное различие между VB.NET и С#.
Рассмотрим следующее выражение С#, которое:
null <= 2
Это выражение оценивается как False, что я и ожидал.
Затем соответствующее выражение VB.NET:
Nothing <= 2
Я с удивлением узнал, что это выражение фактически оценивает True
Похоже, это довольно фундаментальное дизайнерское решение между двумя языками, и это, безусловно, меня охватило.
Кто-нибудь может сказать мне, почему?
Нуль и ничто одно и то же?
Если да, то почему они ведут себя по-другому?
Ответы
Ответ 1
Nothing
в VB оценивает значение по умолчанию для данного типа. (Подробнее см. эту ссылку)
Для целочисленного сравнения (которое компилятор будет считать из правого операнда), Nothing
будет таким образом 0
. 0 <= 2
верен по более очевидным причинам: -)