关于VB中的冒号,给许多人的印象都是:“一行可书写几句语句”。这么说是对的,但是有一种情况是不对的,那就是在条件语句中。这也是做一个VB项目升级的时候遇到,因为这个问题我查了好长时间程序,一直在找VB的中的效果是如何实现的呢?现在发现那是一个非常大的bug。我觉得这不是程序员的错误,应该是VB语法上的漏洞。如果有理解不对的地方欢迎大家指教。
% \& o0 r, f( @8 S# C9 w7 F0 D* m 看一个例子吧:
+ M3 W$ f4 Q& p 1 If Row1 = -1 Then Row1 = 0: If Row2 = -1 Then Row2 = .MaxRows9 C/ V. D1 j/ H6 ~5 L; a' v
我们一般的理解是执行完第一if语句接着将执行第二个语句,应该是下面的样子:
# n$ m7 ~ ]2 d8 \ If Row1 = -1 Then Row1 = 0
* b' Y* d9 b T3 I( H( F+ A If Row2 = -1 Then Row2 = .MaxRows5 b3 l: |0 L& }: n" ]' B
但是事实上不是这样的,变成下面的形式了。这样的形式并不是我们想要的结果。: {: P, c2 p# Q2 Y
If Row1 = -1 Then
7 E, [( @' B- `/ L Row1 = 0
- |, ] J( x* E7 ~: w If Row2 = -1 Then Row2 = .MaxRows
$ H8 W* K( q8 p" d6 \; C, g- [- J* _2 V( i End If9 R$ @0 a3 @; r9 U7 `
我想这个语法对于不熟悉VB的人做代码移植应该是一个非常隐蔽的bug。希望能够对大家有帮助。
5 d8 p3 Q' P/ v* v 这只是我个人的见解,如果有不同意见的欢迎一起交流! |