2014-04-24 20 views
6

Mam rekordów takiego:Jaka jest różnica między "Null" i "Nic" w 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 

I okazało się, że w VB6 rzadko używam „Null” (użyłem go do dokonania oceny pustych nazw schematów rekordów), ale używam „nic” do rzeczy, takich jak obrazy , adodb.connections lub zestawy rekordów. Dla łańcuchów mam vbNullString. Czytam, że jest to wskaźnik do łańcucha pustego.

Czy "Null" jest jak "nieznana wartość zmiennej" i "Nic" prawdziwą wartością pustą?

Odpowiedz

12

Null jest specyficznym podtypem wariantu. Nie istnieje poza typem Wariant i jest tworzony w celu umożliwienia wariantowi modelowania wartości pustej bazy danych.

Nic nie jest wartością zmiennej obiektowej. Zasadniczo jest on identyczny z pustym wskaźnikiem, tzn. Nie ma obiektu.

Poniższa zgłosi błąd, ponieważ „jest” można stosować tylko ze zmiennymi obiektu:

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

Poniższa zgłosi błąd, ponieważ zmienna obiektu nie może być Null:

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

po wykonaniu obliczenia False, ponieważ IsNull() przyjmuje argument Variant.

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

Jest to odpowiednik:

VarType(rs) = vbNull 
+0

Istnieje "Empty", inna wartość wariantu. – Bob77

+0

... co zasadniczo oznacza "niezainicjowany". –

0

Poniższa tabela wyjaśnia jak używać VBScript kluczowych.

Słowa kluczowe Słowo kluczowe Opis
Empty Pusty parametr jest używany do wskazania niezainicjowanej wartość zmiennej. To nie jest to samo co Null.

Fałsz Fałszywy kluczowe ma wartość równą 0.

Nic Słowo kluczowe Nic w VBScript jest używany do skojarzenie zmiennej obiektu z dowolnego rzeczywistego obiektu. Użyj instrukcji Set, aby przypisać Nic do zmiennej obiektu. Na przykład:

Set MyObject = Nothing

Kilka zmiennych obiektu może odnosić się do tego samego obiektu rzeczywistego. Gdy nic nie jest przypisane do zmiennej obiektowej, ta zmienna nie odnosi się już do żadnego rzeczywistego obiektu. Gdy kilka zmiennych obiektowych odwołuje się do tego samego obiektu, pamięć i zasoby systemowe powiązane z obiektem, do którego odnoszą się zmienne, są zwalniane, gdy wszystkie z nich zostały ustawione na Nothing, albo jawnie za pomocą Set, albo niejawnie po ustawieniu ostatniej zmiennej obiektowej na Nic nie wychodzi poza zakres.

Null Słowo kluczowe Null służy do wskazania, że ​​zmienna nie zawiera ważnych danych. To nie jest to samo co Empty.

Prawda Prawdziwe słowo kluczowe ma wartość równą -1.

Powiązane problemy