2012-02-15 2 views
1

У меня есть переменная, равная Null, но если я спрошу, равна ли она «", она evaulates к Null? Почему это не было бы ложью?Null variable = "" evaulates to Null?

var1 = vbNull 
Debug.Print var1 = "" 

Выходной сигнал Null. Почему бы не быть false?

+0

Я забыл VB, но на многих языках один «=» является атрибутом, а «==» является проверкой равенства. также смотрите «умные кавычки». –

+0

В VB6 это единственный '='. – CJ7

+0

«Почему» на самом деле не вопрос. Единственный ответ: «Потому что это то, как было реализовано». – Bob77

ответ

3

VB6 имеет null propagation. Результат любого выражения, включающего Null, всегда равен нулю.

' in this code below V always has the value Null 
Dim V As Variant 
V = 1 + Null 
V = Null + Right$("SomeText", 1) 
V = Right("SomeText", 0) 
+0

@CraigJ - Как указывает ссылка на статью, распространение Null обычно используется в приложениях базы данных. VB6 эволюционировал от VBA (Visual Basic для приложений), а VBA был разработан с учетом потребностей Microsoft Office, в том числе приложений Access. В то время это казалось хорошей идеей :) – rskar

+0

Wikipedia указывает, что Visual Basic начинался как интерфейсный модуль GUI (код под названием «Ruby»), который был объединен с «встроенным BASIC-движком, разработанным для брошенной системы Microsoft« Omega »». Таким образом, кажется, что VB был разработан для приложений БД с самого начала. – rskar

+0

@ rskar Я не думаю, что VB6 эволюционировал от VBA. Вероятно, это было наоборот. – CJ7