Frage

In wie viele Sprachen ist Null nicht gleich alles nicht einmal Null?

War es hilfreich?

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 einmal Missing = Missing schreiben können. (Der Test ist IsMissing(foo))
  • Empty für nicht initialisierte Variablen. Dies tut Test gleich selbst obwohl es auch eine Funktion IsEmpty().
  • ... 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 hat interessante Eigenschaften in Bezug auf logische Operatoren, aber der Gleichheitsoperator ist die gleiche wie für andere Arten in dieser Sprache (dh ((bool?) Null == (bool?) Null) = = true).

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top