Was ist der Unterschied zwischen And und AndAuch in VB.NET?
In VB.NET, was ist der Unterschied zwischen And
und AndAlso
? Welches sollte ich nutzen?
InformationsquelleAutor der Frage Nakul Chaudhary | 2008-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
And
- operator wertet beide Seiten, woAndAlso
wertet der rechten Seite, wenn, und nur wenn die linke Seite wahr ist.Ein Beispiel:
Die oben wirft eine exception, wenn
mystring = Nothing
Dieser nicht eine Ausnahme werfen.
Also, wenn Sie kommen aus der C# Welt, sollten Sie
AndAlso
wie würden Sie verwenden&&
.Weitere Infos hier: http://www.panopticoncentral.net/2003/08/18/the-ballad-of-andalso-and-orelse/
InformationsquelleAutor der Antwort Nico
Den
And
Betreiber überprüfen Sie alle Bedingungen in der Anweisung, bevor Sie fortfahren, während der Andalso-operator wird aufhören, wenn Sie weiß, dass die Bedingung falsch ist. Zum Beispiel:Prüft, ob x gleich 5 und y gleich 7 ist, dann weiter, wenn beide wahr sind.
Prüft, ob x gleich 5 ist. Wenn nicht, dann nicht überprüft, wenn y 7, weil es weiß, dass die Bedingung false ist bereits. (Dies ist die sogenannte short-circuiting.)
Sind in der Regel Menschen verwenden Sie die Kurzschluss-Methode, wenn es gibt einen Grund explizit nicht prüfen, den zweiten Teil wenn der erste Teil nicht zutrifft, so als ob es wäre eine Ausnahme, wenn überprüft. Zum Beispiel:
Wenn das verwendete
And
stattAndAlso
, es würde noch versuchen zuObject.Load()
auch wenn esnothing
, das würde eine exception werfen.InformationsquelleAutor der Antwort Ed Marty
Interessanterweise keine der Antworten erwähnt, dass
And
undOr
im VB.NET sind bit-Operatoren in der Erwägung, dassOrElse
undAndAlso
sind streng booleschen Operatoren.Hinweis: eine nicht-null-integer ist als
true
;Dim e = not 0
wird festgelegte
zu-1
demonstrierenNot
ist auch ein bit-operator.||
und&&
(die C# - VersionenOrElse
undAndAlso
), um den zuletzt ausgewerteten Ausdruck wäre3
und5
beziehungsweise. Diese können Sie verwenden das idiomv || 5
in C# zu geben5
als der Wert des Ausdrucks, wennv
istnull
oder (0
und eine ganze Zahl ist) und der Wert derv
sonst. Der Unterschied in der Semantik fangen können C# - Programmierer, es einmal in VB.NET off-guard als diese "Standard-Wert Redewendung" funktioniert nicht VB.NET.Also, um die Frage zu beantworten: Verwenden Sie
Or
undAnd
für bit-Operationen (integer oder Boolean). VerwendenOrElse
undAndAlso
"Kurzschluss", eine operation, um Zeit zu sparen, oder testen Sie die Gültigkeit der Auswertung vor der Auswertung.If valid(evaluation) andalso evaluation then
oderif not (unsafe(evaluation) orelse (not evaluation)) then
Bonus: Was ist der Wert der folgenden?
InformationsquelleAutor der Antwort Charles Jacks
Wertet beide Bool1 und Bool2
Bool2 ausgewertet, wenn, und nur wenn Bool1 true ist.
InformationsquelleAutor der Antwort Bryan Anderson
Nur für alle diejenigen, die sagen, die Nebenwirkungen sind übel: ein Ort, wo mit zwei Nebenwirkungen in einem Zustand ist gut, würde das Lesen von zwei file-Objekte im tandem.
Mithilfe der
And
gewährleistet, dass eine Zeile verbraucht wird, jedes mal, wenn die Bedingung geprüft wird. In der Erwägung, dassAndAlso
vielleicht Lesen Sie die Letzte ZeileFile1
und lassenFile2
ohne verbraucht line.Natürlich der code oben nicht funktionieren würde, aber ich Nebenwirkungen wie das die ganze Zeit und würde es nicht als "bad" oder "böse" code, wie einige würde führen Sie zu glauben. Es ist leicht zu Lesen und effizient.
InformationsquelleAutor der Antwort Ian
Einen einfachen Weg, um darüber nachzudenken, es ist sogar mit einem noch einfachere Englisch
InformationsquelleAutor der Antwort rbrill
AndAlso viel wie Und, außer es funktioniert wie && in C#, C++, etc.
Der Unterschied ist, dass wenn die erste Ziffer (die einer vor AndAlso) true ist, wird die zweite Klausel ist nie ausgewertet - die zusammengesetzten logischen Ausdruck ist "kurzgeschlossen".
Dies ist manchmal sehr nützlich, z.B. in einem Ausdruck wie:
Mit den alten Und in den obigen Ausdruck würde eine NullReferenceException ausgelöst, wenn myObj waren null.
InformationsquelleAutor der Antwort Tor Haugen
Siehe auch Stack Overflow Frage: Sollte ich benutze immer AndAlso und OrElse Betreiber?.
Außerdem: Ein Kommentar für diejenigen, die erwähnt mit
And
wenn die Rechte Seite der Ausdruck hat eine Nebenwirkung, die Sie brauchen:Wenn die Rechte Seite hat eine Nebenwirkung, die Sie brauchen, verschieben Sie es auf der linken Seite, anstatt mit "Und". Sie benötigen eigentlich nur "Und" wenn beide Seiten haben Nebenwirkungen. Und wenn Sie, dass viele Nebenwirkungen gehen auf Sie wahrscheinlich etwas anderes falsch. Im Allgemeinen sollten Sie wirklich lieber AndAlso.
InformationsquelleAutor der Antwort Joel Coehoorn
Zusätzlich zu den oben genannten Antworten, AndAlso bietet eine Klimaanlage Prozess bekannt als Kurzschluss. Viele Programmiersprachen haben diese Funktion integriert, wie vb.net macht, und kann bieten erhebliche performance-Steigerungen in der langen Bedingung Anweisungen durch Ausschneiden Bewertungen sind unnötig.
Andere ähnliche Bedingung ist die OrElse Zustand, würde nur zu überprüfen, das Recht Zustand, wenn die linke Bedingung false ist, also das Ausschneiden unnötig Bedingung, die prüft, nachdem eine wahre Bedingung gefunden wird.
Ich würde dir raten, immer ein Kurzschluss Prozesse und die Struktur der bedingten Anweisungen in einer Weise, die profitieren am meisten von diesem. Zum Beispiel testen Sie Ihre effizientesten und schnellsten Bedingungen zunächst so, dass Sie nur ausführen, Ihre langen Bedingungen, wenn Sie absolut müssen und Kurzschluss, die anderen Zeiten.
InformationsquelleAutor der Antwort davidallyoung
Für die Mehrheit von uns OrElse und AndAlso wird den trick tun, außer für ein paar verwirrende Ausnahmen (weniger als 1%, wo wir können die Nutzung Oder und Und).
Versuchen Sie, nicht hinreißen Weg durch die Menschen zeigen Ihre Boolesche Logik und macht es so Aussehen wie eine Rakete Wissenschaft.
Es ist ganz einfach und straight forward und gelegentlich kann Ihr system nicht wie erwartet funktionieren, weil es nicht wie Sie Ihre Logik in den ersten Platz. Und doch Ihr Gehirn sagt Ihnen, dass seine Logik ist zu 100% getestet und bewährt und es sollte funktionieren. In diesem moment aufhören, Vertrauen Sie Ihr Gehirn und ihn zu bitten, wieder zu denken oder (nicht OrElse oder vielleicht OrElse) Sie zwingen sich einen anderen job suchen, die nicht erfordern viel Logik.
InformationsquelleAutor der Antwort Anand