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