1
32
此语法通常用于代替
答案是肯定的,这在VB.NET中仍然有效。使用它时要小心,因为它不是“标准编程结构”,将来需要维护代码的人可能不熟悉它。 |
2
15
我不确定这种结构与以下结构相比有何优势:
上面的结构是短路的,我不必去想它是什么,因为它是一个标准结构。 |
3
12
其他人已经回答了这个实际问题,但我只是想插嘴,我相当频繁地使用这个结构。我认为这通常是同时测试两个布尔条件的最具可读性的方法:
我承认,我发现它容易阅读的部分原因是我确实使用了它,而且我确实记得第一次看到它时必须解析它——但一旦成功解析,我的反应是“太棒了!” |
4
10
在这个主题上有很多混淆,但要回答OPs问题:是的,逻辑计算在VB.Net中与在VB6中与在VBA中相同。 http://support.microsoft.com/kb/817250 为了利用选择案例优化技术,您使用选择案例固有语法来避免使用逻辑运算符And、Or、Xor等。正是这些运算符具有短路评估功能。 考虑这个例子:
Select Case版本将仅运行A。If块将同时运行两者。这不是If语句的错误,而是And运算符的错误。如果愿意,可以将If语句构造为如下所示的短路:
B将不会运行。这只是风格的问题。 需要知道的重要一点是,您要避免的是And/Or/Xor运算符,而不是If块。如果您更喜欢If块的选择案例版本。。。给你更多的力量:) |
5
4
|
6
3
你是说像这样的事吗?
其中,程序将编写2…如果这是您要问的,那么是的,这在VB.NET中仍然存在 |
7
2
您可以在任何包装器类型上定义Equals运算符。 然后,您可以在Select Case上使用包装器类型。 样品包装。
关于性能。 |
8
2
使用构造SELECT CASE TRUE的另一个原因是当您的CASE语句计算为布尔值时。选择案例需要将所有案例评估为与控件相同的数据类型。如果您正在查看字符串数据类型,那么所有case语句也需要是字符串。
但是,如果使用LIKE运算符比较部分字符串,则案例数据类型将变为布尔值,这与字符串控件不匹配。以下代码将不起作用:
为了使用通配符(因此具有布尔大小写结果),必须具有布尔控制值,因此结构需要:
我想你可以用IF…ELSEIF
就我个人而言,当有三个以上的选项时,SELECT CASE更易于使用和阅读。当我必须评估两个或三个不同选项(>、=、<)或测试特定范围的“有效”条目的值时,我使用IF…ELSE和IF…ELSEIF。相反,如果条目具有更多的多样性,并且我需要确定十种可能性中的哪一种发生了,那么SELECT CASE是一种更容易使用的构造,因为它消除了对多个OR语句的需要。 |
9
1
阅读此线程后,似乎
|