Ничто! = пустой указатель - или делает это?

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

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

null <= 2

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

Nothing <= 2

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

Это походит на довольно фундаментальное проектное решение между этими двумя языками, и это, конечно, ловило меня.

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

14
задан Gavin Osborn 9 July 2010 в 12:28
поделиться

1 ответ

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

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

30
ответ дан 1 December 2019 в 09:00
поделиться