Eine Zeile in VB .NET


77

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


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:


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..

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.


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

2
@ BrianWebster Schön. Ich hasse es. :)
Bart Hofland


4

Fügen Sie einfach hinzu Then:

If A = 1 Then A = 2

oder:

If A = 1 Then _
    A = 2

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.


3
If (X1= 1) Then : Val1= "Yes" : Else : Val1= "Not" : End If

1

Sie können auch die IIf-Funktion verwenden:

CheckIt = IIf(TestMe > 1000, "Large", "Small")

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)

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

0

wenn Bedingung dann Befehl1: sonst Befehl2 ...


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.