【发布时间】:2017-03-24 15:23:34
【问题描述】:
在 VB .Net 中,可以像这样使用内联 If 语句
if a Then ret = "A" Else ret = "Not A"
我知道也可以嵌套这些语句。我知道这可能不是好的做法,因为可读性会下降......
If a Then If b Then ret = "A & B" Else ret = "A & Not B" Else ret = "Not A"
将像这样评估:
If a Then
If b Then
ret = "A & B"
Else
ret = "A & Not B"
End If
Else
ret = "Not A"
End If
现在,如果我删除最后一个 Else 语句,我会得到:
If a Then If b Then ret = "A & B" Else ret = "A & Not B"
这是:
If a Then
If b Then
ret = "A & B"
Else
ret = "A & Not B"
End If
End If
所以我猜编译器会找到 Else 并将其与行中的最后一个 openend If 匹配,这是有道理的。
我的问题是:是否可以更改评估顺序?我的意思是 Else 是否可能与第一个 if 匹配?
所以它看起来像这样:
If a Then
If b Then
ret = "A & B"
End If
Else
ret = "Not A"
End If
但内联(类似这样,添加括号以理解我的意思):
If a Then ( If b Then ret = "A & B" ) Else ret = "Not A"
我尝试使用括号或添加 End If,但它会引发语法错误,并且我找不到相关文档。
我没有卡在任何地方,我知道这可能不是一个好的编程习惯,但我只是想知道(出于好奇)是否可能。
我也知道我可以切换语句(即在 a 之前测试 b),但假设我不能(a 是一个列表,并且必须在 b 之前测试 Nothing,例如,这将是计数)。
【问题讨论】:
-
如果您对编译器感到困惑,想象一下您自己试图理解这 6 个月后的情况
标签: vb.net if-statement nested conditional-operator