Eine Zeile in VB .NET

77

Ist es möglich, eine Zeile if-Anweisung in VB .NET auszuführen? Wenn das so ist, wie?

Raúl Roa
quelle
Seien Sie jedoch vorsichtig mit dem IIf-Operator - er ist nicht immer kurzgeschlossen und es werden sowohl die wahren als auch die falschen Ausdrücke ausgewertet.
Paul Alexander
1
Ich denke tatsächlich, dass IIF niemals kurzgeschlossen wird
Brian J
Was ist der Vorteil - oder sogar der Zweck - von IFF gegenüber If?
Lou
@LeoKing Abwärtskompatibilität mit VB6. Single "I" IF wurde in VB.NET eingeführt, während Double "I" IIF zuvor existierte. Und ich glaube nicht, dass ein Teil von VB6 die Kurzschlussbewertung unterstützt.
Brian J

Antworten:

119

Verwenden Sie IF ().

Es ist ein ternärer Kurzschlussoperator.

Dim Result = IF(expression,<true return>,<false return>)

SIEHE AUCH:

Strand
quelle
5
Beachten Sie, dass es implizites Typ-Casting geben kann. Beispiel: If(x.HasValue, x.Value, Nothing) Gibt 0 zurück, wenn x keinen Wert enthält. Eine Möglichkeit, Abhilfe zu schaffen, besteht darin, den Wert wie folgt auf Nullable zu setzen:If(x.HasValue, CType( x.Value, Nullable( of Integer) ), Nothing)
LosManos
2
@LosManos FYI, Der Grund für das Ergebnis, das Sie erhalten haben, ist folgender: Wenn xTyp hat Integer?, dann x.Valuehat Typ Integer, NICHT Integer?. Der Compiler konvertiert also korrekt Nothing in Integer(um mit dem anderen Ergebnis übereinzustimmen), was zu führt 0. Nur das Verhalten des Compilers erklären; Was Sie getan haben, ist eine gute Lösung für das, was Sie wollten. Eine alternative Lösung wäre, das Nichts auf den gewünschten Typ zu gießen, z DirectCast(Nothing, Integer?).
ToolmakerSteve
Wollen Sie damit sagen, dass If den von ExpressionIfTrue zurückgegebenen Typ überprüft, wenn ExpressionIfFalse zurückgegeben wird?
Ama
25

Es ist eigentlich ziemlich einfach ..

If CONDITION Then ..INSERT CODE HERE..
Quintin Robinson
quelle
Ja. Obwohl ich das hasse, If...Then...Else...ist es möglich , Aussagen in eine Zeile zu setzen. Beachten Sie jedoch, wenn Sie es mit dem Platzieren mehrerer Anweisungen in einer Zeile mithilfe von Doppelpunkten kombinieren. Die Anweisung If <condition> Then <action1> : <action2>führt Aktion2 nur in Kombination mit Aktion 1 aus! Action2 ist keine separate Aussage für sich! Aus Gründen der Übersichtlichkeit würde ich empfehlen, immer Blockanweisungen zu verwenden und Doppelpunkte insgesamt zu vermeiden.
Bart Hofland
17

Ich weiß nicht, warum die Leute das noch nicht gepostet haben ...

Einzelne Zeile

Syntax:

If (condition) Then (do this)

Beispiel:

If flag = true Then i = 1

Mehrere andere

Syntax:

If (condition) Then : (do this)
ElseIf (condition2) Then : (do this)
Else : (do this)
End If

ODER

If (condition) Then : (do this) : ElseIf (condition2) Then : (do this) : Else : (do this) : End If

Mehrere Operationen

Syntax:

If (condition) Then : (do this) : (and this) : End If

Hoffe das wird jemandem helfen.

Flauschiger Sebbert
quelle
16

Sie können mehrere Anweisungen und andere in einer einzeiligen if-Anweisung in VB verwenden. In diesem Beispiel endet y mit 3 und nicht mit 7.

i = 1
If i = 1 Then x = 3 : y = 3 Else x = 7 : y = 7
xpda
quelle
2
@ BrianWebster Schön. Ich hasse es. :)
Bart Hofland
6

Oder

IIf(CONDITION, TRUE_ACTION, FALSE_ACTION)
Dmitriy Zhukov
quelle
1
Und dies ist ein Ausdruck, während die Frage nach einer Aussage fragte. ;-)
peSHIr
1
Der Nachteil IIfgegenüber der identischen Syntax Ifist, dass IIfsie anfälliger für Laufzeitfehler ist .
Chiramisu
4

Fügen Sie einfach hinzu Then:

If A = 1 Then A = 2

oder:

If A = 1 Then _
    A = 2
Anton Gogolev
quelle
4

Eine Zeile 'If-Anweisung'

Einfacher als Sie denken, ist aufgefallen, dass noch niemand das eingesetzt hat, was ich habe, also werfe ich meine 2 Cent ein.

In meinen Tests brauchst du das nicht continuation? semi-colon, du kannst darauf verzichten, auch du kannst es ohne das tun End If.

<C#> = Condition.

<R#> = True Return.

<E> = Else Return.

Einzelbedingung

If <C1> Then <R1> Else <E>

Mehrere Bedingungen

If <C1> Then <R1> Else If <C2> Then <R2> Else <E>

Unendlich? Bedingungen

If <C1> Then <R1> Else If <C2> Then <R2> If <C3> Then <R3> If <C4> Then <R4> Else...
' Just keep adding "If <C> Then <R> Else" to get more

- Ich bin mir nicht sicher, wie ich das formatieren soll, um es besser lesbar zu machen. Wenn also jemand eine Bearbeitung anbieten könnte, tun Sie dies bitte.

nora
quelle
3
If (X1= 1) Then : Val1= "Yes" : Else : Val1= "Not" : End If
S. Ozan
quelle
1

Sie können auch die IIf-Funktion verwenden:

CheckIt = IIf(TestMe > 1000, "Large", "Small")
Jon Limjap
quelle
0

Es ist einfach in VB.NET-Code zu verwenden

Grundlegende Syntax IIF (Ausdruck als Boolescher Wert, wahrer Teil als Objekt, falscher Teil als Objekt) als Objekt

  1. Verwendung von IIF wie Ternary
  2. Dim myVariable as string = ""
  3. myVariable = IIf (Bedingung, Richtig, Falsch)
Raschi
quelle
0
If (condition, condition_is_true, condition_is_false)

In einer längeren Version wird es so aussehen:

If (condition_is_true) Then 

Else (condition_is_false)

End If
Ravarador
quelle
0

wenn Bedingung dann Befehl1: sonst Befehl2 ...

Mostafa Elshokaly
quelle
Hey Mostafa, willkommen bei stackoverflow! Ihre Antwort ist ziemlich kurz, ohne Erklärung und fügt den anderen Antworten, wie der von Fluffy Sebbert, keine zusätzlichen Informationen hinzu.
Stefan M