Nothing = String.Empty (Warum sind diese gleich?)
Warum wird die erste if-Anweisung zu true ausgewertet werden? Ich weiß, wenn ich "ist" statt"=", dann wird es nicht zu true ausgewertet werden. Wenn ich den ersetzen-String.Leer mit "Foo" es ist nicht zu true ausgewertet werden. Beide String.Leer und "Foo" haben die gleiche Art von String, also warum macht man zu true ausgewertet, und der andere nicht?
//this evaluates to true
If Nothing = String.Empty Then
End If
//this evaluates to false
If Nothing = "Foo" Then
End If
InformationsquelleAutor der Frage Justin Helgerson | 2010-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nichts in VB.net ist der default-Wert für ein Typ ist. Die language spec sagt in Abschnitt 2.4.7:
Also, wenn Sie einen test gegen String.Leere, Nichts wird in einen string umgewandelt, der hat die Länge 0. Der Is-operator verwendet werden soll, testen Sie gegen Nichts und String.Leer.Gleich(Nichts), wird auch false zurück.
InformationsquelleAutor der Antwort Rebecca Chernoff
Es ist ein besonderer Fall der VB -
=
und<>
Betreiber.Den - Sprachspezifikation Staaten in Abschnitt 11.14:
InformationsquelleAutor der Antwort Heinzi
Versuchen Sie dies:
Den
=
Betreiber nicht durchsetzen gleichen Typen, in der Erwägung, dass die.Equals()
Methode, die ein string-Objekt hat, wie dieIs
Betreiber.InformationsquelleAutor der Antwort Amber
Bezug zu diesem Thema, wenn Sie eine string-variable, initialisiert mit "nichts" zugeordnet werden, die Eigenschaft "Wert" eines SqlParameter parameter wird ignoriert, die nicht in der Befehl an den server gesendet, und ein parameter fehlt Fehler geworfen wird.
Wenn Sie initialisieren Sie die variable mit dem string.leer geht alles in Ordnung.
InformationsquelleAutor der Antwort DanielRuzo