2012-02-15 7 views
1

私はNullに等しい変数を持っていますが、それがNullに等しいかどうか尋ねると "Null"になります。なぜそれは間違っていないでしょうか?null変数= ""はNullにエバリュエートしますか?

var1 = vbNull 
Debug.Print var1 = "" 

出力はNullです。なぜそれがfalseではないでしょうか?

+0

私はVBを忘れてしまいましたが、多くの言語で '=='は同義語で、 '=='は等価性チェックです。また、 "スマートな引用符"を見てください。 –

+0

VB6では、単一の '='です。 – CJ7

+0

「なぜ」は本当に有効な質問ではありません。唯一の答えは、「それは=どのように実装されたのか」です。 – Bob77

答えて

3

VB6はnull propagationです。 Nullを含む式の結果は常に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 for Applications)から発展し、VBAはAccessデータベースアプリケーションを含むMicrosoft Officeの自動化のニーズを考慮して開発されました。当時のように思えました:) – rskar

+0

ウィキペディアは、Visual Basicが「放棄されたOmega」データベースシステム用に設計された組み込みBASICエンジンと組み合わされたGUIインターフェイスモジュール(コード名「Ruby」)として始まったことを示しています。したがって、VBは最初からDBアプリケーション用に設計されているようです。 – rskar

+0

@rskar VB6はVBAから進化したとは思わない。それはおそらく他の方法ラウンドでした。 – CJ7

関連する問題