Frage

Ich habe kürzlich eine Frage gestellt IIf vs.Wenn und habe herausgefunden, dass es in VB eine weitere Funktion gibt, die aufgerufen wird Wenn was im Grunde das Gleiche bewirkt wie IIf aber es handelt sich um einen Kurzschluss.

Macht dies Wenn Funktion ist besser als die IIf Funktion?Tut das Wenn Aussage Trump die Wenn Und IIf Funktionen?

War es hilfreich?

Lösung

Verdammt, ich dachte wirklich, dass du die ganze Zeit über den Operator sprichst.;-) Ohnehin …

Ist diese If-Funktion leistungsfähiger als die IIf-Funktion?

Definitiv.Denken Sie daran, es ist in die Sprache integriert.Es muss nur eines der beiden bedingten Argumente ausgewertet werden, was möglicherweise einen kostspieligen Vorgang einspart.

Übertrumpft die If-Anweisung die If- und IIf-Funktionen?

Ich denke, man kann die beiden nicht vergleichen, weil sie unterschiedliche Dinge tun.Wenn Ihr Code eine Zuweisung semantisch ausführt, sollten Sie dies betonen und nicht die Entscheidungsfindung.Benutzen Sie die If Operator hier anstelle der Anweisung.Dies gilt insbesondere dann, wenn Sie es bei der Initialisierung einer Variablen verwenden können, da die Variable sonst standardmäßig initialisiert wird, was zu langsamerem Code führt:

Dim result = If(a > 0, Math.Sqrt(a), -1.0)

' versus

Dim result As Double ' Redundant default initialization!
If a > 0 Then
    result = Math.Sqrt(a)
Else
    result = -1
End If

Andere Tipps

Ein sehr wichtiger Unterschied zwischen IIf() Und If() ist das mit Option Infer On Letzteres wandelt die Ergebnisse in bestimmten Fällen implizit in denselben Datentyp um wie where IIf wird zurückkehren Object.

Beispiel:

    Dim val As Integer = -1
    Dim iifVal As Object, ifVal As Object
    iifVal = IIf(val >= 0, val, Nothing)
    ifVal = If(val >= 0, val, Nothing)

Ausgabe:
iifVal hat den Wert „Nothing“ und den Typ „Object“.
ifVal hat den Wert 0 und den Typ Integer, da es implizit Nothing in eine Integer umwandelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top