如果在VB .NET中则为一行


77

是否可以在VB .NET中执行if语句?如果是这样,怎么办?


不过,请谨慎使用IIf运算符-它并不总是会短路,并且会同时评估true和false表达式。
Paul Alexander

1
我实际上认为IIF永远不会短路
Brian J

与If相比,IFF的优势是什至是目的?
2016年

@LeoKing向后兼容VB6。VB.NET中引入了单“ I” IF,而以前存在过双“ I” IIF。而且我不相信VB6的任何部分都支持短路评估。
布赖恩·J

Answers:


119

使用IF()。

它是短路的三元运算符。

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

也可以看看:


5
请注意,可以存在隐式类型转换。例如: If(x.HasValue, x.Value, Nothing) 如果x不包含值,则将返回0。一种补救方法是像这样将值强制为Nullable:If(x.HasValue, CType( x.Value, Nullable( of Integer) ), Nothing)
LosManos

2
@LosManos仅供参考,您得到结果的原因如下:如果x具有type Integer?,则x.Value具有类型IntegerNOT Integer?。因此,编译器正确地将Nothing转换为Integer(以匹配其他结果),结果为0。仅说明编译器的行为;您所做的就是为您想要的东西提供很好的解决方案。另一种解决方案是将Nothing强制转换为所需的类型,例如DirectCast(Nothing, Integer?)
制造商史蒂夫(Steve)2014年

您是说If在返回ExpressionIfFalse时正在检查ExpressionIfTrue返回的类型吗?
阿玛

25

实际上很简单。

If CONDITION Then ..INSERT CODE HERE..

是。尽管我讨厌这样做,但可以将If...Then...Else...语句放在一行上。但是,请注意在将其与使用冒号将多条语句放在一行中结合使用时。该语句If <condition> Then <action1> : <action2>将仅与action 1结合执行action2!Action2本身并不是单独的语句!因此,为清楚起见,我建议始终使用块语句,并完全避免使用冒号。
巴特霍夫兰

17

不知道为什么人们还没有发布这个...

单线

句法:

If (condition) Then (do this)

例:

If flag = true Then i = 1

多个ElseIf

句法:

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

冒着被最纯粹的人和c#程序员折磨的风险,您可以在VB中使用多个语句,也可以在一行中使用if语句。在此示例中,y以3而不是7结尾。

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

2
@BrianWebster尼斯。我讨厌它。:)
巴特霍夫兰郡



4

单行“ If语句”

比您想象的要容易,发现没有人投入我所拥有的东西,所以我将投入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

-不太确定如何设置其格式以使其更具可读性,因此,如果有人可以提供编辑,请执行-


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


0

在VB.NET代码中易于使用

基本语法IIF(以布尔值表示,真部分为对象,假部分为对象)作为对象

  1. 使用与三元相同的IIF
  2. 将myVariable设置为string =“”
  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!您的答案很短,没有任何解释,也不会在其他答案中添加任何其他信息,例如Fluffy Sebbert的答案。
Stefan M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.