2012-02-15 35 views
1

我有一個變量等於Null,但如果我問是否等於「」它會變成Null?爲什麼它不會是假的?空變量=「」蒸發到空?

var1 = vbNull 
Debug.Print var1 = "" 

輸出是Null。爲什麼不是false

+0

我忘了VB,但在很多語言中,一個'='是一個分配,而'=='是一個相等檢查。另外,觀看「聰明的報價」。 – 2012-02-15 03:25:33

+0

在VB6中,它是一個'='。 – CJ7 2012-02-15 03:28:38

+0

「爲什麼」並不是一個真正有效的問題。唯一的答案是「因爲這是怎麼實施的。」 – Bob77 2012-02-15 04:00:05

回答

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 - 文章鏈接指出,空傳播通常用於數據庫應用程序。 VB6從VBA(Visual Basic for Applications)發展而來,VBA是根據Microsoft Office自動化的需求開發的,其中包括Access數據庫應用程序。當時似乎是個好主意:) – rskar 2012-02-15 15:40:19

+0

維基百科表示,Visual Basic最初是作爲GUI界面模塊(代號「Ruby」)開始的,它與爲微軟廢棄的'歐米茄'數據庫系統設計的嵌入式BASIC引擎相結合。「所以看起來VB是從一開始就爲DB應用程序設計的。 – rskar 2012-02-15 15:49:32

+0

@rskar我不認爲VB6是從VBA發展而來的。這可能是相反的。 – CJ7 2016-02-22 23:26:04