Ничего!= Null - или нет?

Недавно в предыдущем проекте я встретил своеобразное различие между VB.NET и С#.

Рассмотрим следующее выражение С#, которое:

null <= 2

Это выражение оценивается как False, что я и ожидал. Затем соответствующее выражение VB.NET:

Nothing <= 2

Я с удивлением узнал, что это выражение фактически оценивает True

Похоже, это довольно фундаментальное дизайнерское решение между двумя языками, и это, безусловно, меня охватило.

Кто-нибудь может сказать мне, почему? Нуль и ничто одно и то же? Если да, то почему они ведут себя по-другому?

Ответы

Ответ 1

Nothing в VB оценивает значение по умолчанию для данного типа. (Подробнее см. эту ссылку)

Для целочисленного сравнения (которое компилятор будет считать из правого операнда), Nothing будет таким образом 0. 0 <= 2 верен по более очевидным причинам: -)