【发布时间】:2013-09-16 13:49:10
【问题描述】:
问题:
为什么下面的代码(不是我写的)甚至可以编译?
我的意思是除了选项 strict 关闭并且 option infer 开启之外......
If Not actdate.DayOfWeek = DayOfWeek.Saturday And Not actdate.DayOfWeek.Sunday Then
...
End If
**编辑:**只是对于那些不熟悉 VB 的人来说,它显然与以下内容相同:
if (!(actdate.DayOfWeek == DayOfWeek.Saturday) & !actdate.DayOfWeek.Sunday) {
...
}
这基本上已经回答了这个问题,因为要记住的是 VB-`AND` 实际上是按位与。
【问题讨论】:
-
这就是逻辑运算和位运算的区别。 msdn.microsoft.com/en-us/library/wz3k228a.aspx
-
那为什么
If 1 = 1 And "hi" Then ...也能编译?它会给你一个运行时异常,但仍然可以编译。 -
@JefferyKhan:可能是因为
Option Strict关闭了。 -
@SLaks Sweet,我不知道这个选项存在。