In wie viele Sprachen ist Null nicht gleich alles nicht einmal Null?
-
09-06-2019 - |
Frage
In wie viele Sprachen ist Null nicht gleich alles nicht einmal Null?
Lösung
Es ist auf diese Weise in SQL (als logischer Sprache), weil null bedeutet, unbekannt / nicht definiert.
jedoch in Programmiersprachen (wie etwa C ++ oder C #), ein Null-Zeiger / Referenz ist ein spezifischer Wert mit einer bestimmten Bedeutung - nichts
.Zwei Nichtigkeiten sind equivilent, aber zwei Unbekannten nicht. Die Verwirrung kommt von der Tatsache, dass die gleichen Namen (null) für beide Konzepte verwendet wird.
Andere Tipps
In VB6 der Ausdruck Null = Null
Null
produzieren statt True
wie man erwarten würde.
Dies wird einen Laufzeitfehler verursachen, wenn Sie versuchen, es zu einem Boolean zuweisen, aber wenn Sie es verwenden,
als Bedingung „If ... Then
“ wird es wie False
handeln. Außerdem Null <> Null
wird auch
Produkte Null
, so:
In VB6 Sie, dass Null
sagen könnte, ist weder sich selbst gleich (oder etwas anderes), noch ungleich!
Sie sollen testen für sie die IsNull()
Funktion.
VB6 hat auch andere spezielle Werte:
-
Nothing
für Objektreferenzen.Nothing = Nothing
ist ein Übersetzungsfehler. (Sie sollten es zum Vergleich mit „is
“) -
Missing
für optionale Parameter, die gegeben wurden nicht. Es hat keine wörtliche Darstellung, so dass Sie nicht einmalMissing = Missing
schreiben können. (Der Test istIsMissing(foo)
) -
Empty
für nicht initialisierte Variablen. Dies tut Test gleich selbst obwohl es auch eine FunktionIsEmpty()
. - ... lassen Sie mich wissen, wenn ich habe ein vergessen
Ich erinnere mich ein bisschen überdrüssig VB wird.
Oracle ist auf diese Weise.
SELECT * FROM dual WHERE NULL=null; --no rows returned
MySQL hat eine Null-safe Gleichheitsoperator, <=>, die true zurückgibt, wenn beide Seiten gleich sind oder beide Seiten sind null. Siehe MySQL Docs .
In C #, Nullable
die kurzgeschlossen Verhalten der kurzgeschlossen logischen Operatoren zu bewahren, und zu bewahren Konsistenz mit den nicht kurzgeschlossen logischen Operatoren, die NULL-Werte zulassen boolean hat einige interessante Eigenschaften. Zum Beispiel: true || null == true. falsch && null == false usw. Dieses mit anderen-drei wertigen Logik Sprachen wie ANSI SQL .
Sie können machen Rubin auf diese Weise arbeiten:
class Null
def self.==(other);false;end
end
n=Null
print "Null equals nothing" if n!=Null
In SQL würden Sie so etwas wie zu tun:
WHERE column is NULL
statt
WHERE column = NULL