Один рядок, якщо у VB .NET


78

Чи можна зробити один рядок if у VB .NET? Якщо так, то як?


Будьте обережні з оперором IIf - він не завжди замикається, і оцінюються як справжні, так і помилкові вирази.
— Пол Олександр

1
Я насправді вважаю, що IIF ніколи не замикається
— Брайан Дж.,

Яка перевага - чи навіть мета - IFF перед If?
— Лу

@LeoKing Зворотна сумісність з VB6. Одиночна IF я була введена у VB.NET, тоді як подвійна II IF існувала раніше. І я не вірю, що жодна частина VB6 підтримує оцінку короткого замикання.
— Брайан Дж.

Відповіді:


121

Використовуйте IF ().

Це короткозамкнений потрійний оператор.

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

ДИВИТИСЯ ТАКОЖ:


5
Зверніть увагу, що може існувати неявне лиття типу. Наприклад: If(x.HasValue, x.Value, Nothing) поверне 0, якщо x не містить значення. Одним із способів виправлення може бути примусове значення до Nullable таким чином:If(x.HasValue, CType( x.Value, Nullable( of Integer) ), Nothing)
— LosManos

2
@LosManos FYI, Причиною отриманого результату є така: Якщо xмає тип Integer?, значить x.Valueмає тип Integer, НЕ Integer?. Отже, компілятор правильно перетворив Nothing у Integer(щоб відповідати іншому результату), в результаті чого 0. Просто пояснення поведінки компілятора; те, що ви зробили, - це прекрасне рішення для того, що ви хотіли. Альтернативним рішенням було б передати Ніщо на бажаний тип, наприклад DirectCast(Nothing, Integer?).
— ToolmakerSteve

Ви хочете сказати, що If перевіряє тип, що повертається ExpressionIfTrue, коли він повертає ExpressionIfFalse?
— Ама,

25

Насправді це досить просто ..

If CONDITION Then ..INSERT CODE HERE..

Так. Незважаючи на те, що я ненавиджу це, розміщення If...Then...Else...висловлювань в один рядок можливо. Однак пам’ятайте, коли ви поєднуєте це з розміщенням декількох операторів в одному рядку за допомогою двокрапки. Оператор If <condition> Then <action1> : <action2>виконуватиме action2 лише у поєднанні з action 1! Action2 не є окремим твердженням! Тому для наочності я б радив завжди використовувати оператори блоків і взагалі уникати двокрапки.
— Барт Хофланд,

17

Не знаю, чому люди цього ще не опублікували ...

Однорядковий

Синтаксис:

If (condition) Then (do this)

Приклад:

If flag = true Then i = 1

Кілька інших

Синтаксис:

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

АБО

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

Багато операцій

Синтаксис:

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

Сподіваюся, це комусь допоможе.


16

Ризикуючи спричинити защемлення програмістів purests та c #, ви можете використовувати декілька операторів, інакше в однострочному операторі if у VB. У цьому прикладі y закінчується 3, а не 7.

i = 1
If i = 1 Then x = 3 : y = 3 Else x = 7 : y = 7

2
@BrianWebster Ніцца. Я це ненавиджу. :)
— Барт Хофланд



4

Один рядок "Якщо заява"

Простіше, ніж ви думаєте, зауважив, що ніхто ще не поклав те, що я маю, тому кину свої 2 центи.

У моєму тестуванні вам не потрібно continuation? semi-colon, ви можете обійтися без, також ви можете зробити це без End If.

<C#> = Condition.

<R#> = True Return.

<E> = Else Return.

Одномісний стан

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

Кілька умов

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

Нескінченний? Умови

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

-Не дуже впевнений, як відформатувати це, щоб зробити його більш читабельним, тому, якщо хтось може запропонувати редагування, будь ласка, зробіть-




0

Його просто використовувати у коді VB.NET

Базовий синтаксис IIF (вираз як логічний, істинна частина як об'єкт, помилкова частина як об'єкт) як об'єкт

  1. Використання IIF те саме, що і Ternary
  2. Затемнити myVariable як рядок = ""
  3. myVariable = IIf (умова, істина, помилка)

0
If (condition, condition_is_true, condition_is_false)

Це виглядатиме так у довшій версії:

If (condition_is_true) Then 

Else (condition_is_false)

End If

0

якщо умова, то command1: else command2 ...


Гей, Мостафа, ласкаво просимо до stackoverflow! Ваша відповідь досить коротка, без будь-яких пояснень і не додає жодної додаткової інформації до інших відповідей, як-от відповідь Пухнастого Себберта.
— Stefan M
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.