2014-04-24 8 views
6

Ich habe ein Re-Cord wie folgt aus:Was ist der Unterschied zwischen "Null" und "Nichts" in VB6?

Dim rs as Recordset 
Set rs as New Recordset 

'... a lot of coding ... 

if Err.Number <> 0 Then ' oops, something gone wrong! 
    If rs.State <> adStateClosed Then rs.Close 
    Set rs = Nothing 
end if 

' I want to evaluate if rs is Nothing, or Null 

if rs is Nothing then 
' this doesn't throw errors, and works well :D 
end if 

if rs is Null then 
' this throws an error of "types not compatible" 
end if 

if rs = Null then 
' this throws an error of "types not compatible" 
end if 

if isNull(rs) then 
' never enters here, isNull(rs) evaluates to False 
end if 

ich, dass selten in VB6 heraus, dass ich „Null“ verwenden (Ich benutzte es für leeres Re-Cord-Schema Namen Auswertung), aber ich benutze „Nichts“ für Sachen wie Bilder , adodb.connections oder recordsets. Für Strings habe ich vbNullString. Ich lese es ist ein Zeiger auf eine Null-Zeichenfolge.

Ist "Null" wie ein "unbekannter Variablenwert" und "Nothing" ein echter Nullwert?

Antwort

12

Null ist ein spezifischer Untertyp einer Variante. Es existiert keine Existenz außerhalb des Variant-Typs und wird erstellt, um einer Variante zu ermöglichen, einen Datenbank-Nullwert zu modellieren.

Nichts ist ein Wert einer Objektvariablen. Es ist im wesentlichen identisch mit einem Nullzeiger, d. H. Es gibt kein Objekt.

Die folgende wirft einen Fehler, da „ist“ nur mit Object-Variablen verwendet werden:

if rs is Null then 
' this throws an error of "types not compatible" 
end if 

Die folgende wirft einen Fehler, da eine Objektvariable Null sein kann nie:

if rs = Null then 
' this throws an error of "types not compatible" 
end if 

Die following wertet False aus, weil IsNull() ein Variant-Argument verwendet.

if isNull(rs) then 
' never enters here, isNull(rs) evaluates to False 
end if 

Es ist äquivalent zu:

VarType(rs) = vbNull 
+0

Dort ist 'Empty', ein anderer Variant-Wert. – Bob77

+0

... was im Wesentlichen "nicht initialisiert" bedeutet. –

0

In der folgenden Tabelle wird erläutert, wie VBScript Keywords verwenden.

Keywords Schlüsselwort Beschreibung
Leer Das leere Schlüsselwort wird verwendet, um einen nicht initialisierten Variablen Wert anzuzeigen. Das ist nicht dasselbe wie Null.

Falsch Das falsche Schlüsselwort hat einen Wert gleich 0.

Nothing Das nichts Schlüsselwort in VBScript verwendet wird, eine Objektvariable von jedem tatsächlichen Objekt dissoziieren. Verwenden Sie die Set-Anweisung, um einer Objektvariablen Nothing zuzuweisen. Zum Beispiel:

Sets MyObject = Nothing

Mehrere Objektvariablen können auf das gleiche tatsächliche Objekt beziehen. Wenn einer Objektvariablen Nothing zugewiesen ist, verweist diese Variable nicht mehr auf ein tatsächliches Objekt. Wenn sich mehrere Objektvariablen auf dasselbe Objekt beziehen, werden Speicher- und Systemressourcen, die dem Objekt zugeordnet sind, auf das die Variablen verweisen, erst freigegeben, nachdem alle auf Nothing festgelegt wurden, entweder explizit mit Set oder implizit nach der letzten Objektvariable Nichts geht außer Reichweite.

Null Das Schlüsselwort Null gibt an, dass eine Variable keine gültigen Daten enthält. Das ist nicht dasselbe wie Leer.

True Das Schlüsselwort True hat einen Wert gleich -1.

Verwandte Themen