我的印象是写作总是最好:
If Not X = Y then
然后
If X <> Y then
但是我不知道我做了什么我得到了这个想法: - )。
有最好的吗?为什么我们有两种方法可以做同样的事情呢?
TKS!
答案 0 :(得分:7)
可读性是最重要的。
第二个对我来说似乎更自然。使用等号然后将Not
添加到其中似乎具有误导性。
Not
恕我直言最好与IsNumeric(...)
等布尔函数一起使用,这样可以更自然地读取代码,例如,
If Not IsNumeric(myNumberString) Then
而且,我个人更喜欢使用Not
到= False
进行布尔测试。例如,我喜欢......
If bFlag1 Then
If Not bFlag2 Then
...超过......
If bFlag1 = True Then ' <-- (This is totally redundant) = True
If bFlag2 = False Then
If a <> b = True Then ' <-- please don't ever do this
答案 1 :(得分:2)
第一个选择是避免混淆。有人可能会认为你打算写If (Not X) = Y Then
。
为什么我们有两种方式?因为......你怎么能阻止它呢?这是三个运算符=
,<>
和Not
的自然结果。
答案 2 :(得分:2)
除了风格和可读性之外,还有一点不同:
Not
是一个逻辑运算符,<>
是一个关系运算符,逻辑和位运算符的优先级低于其他算术运算符和关系运算符(参见here)。
此外Not
运算符可以重载,我认为这对于中的关系运算符是不可能的。VBA
答案 3 :(得分:1)
我认为If X <> Y Then...
更具表现力(但这是一个偏好问题)。此外,它在条件评估方面可能更有效,因为If Not X = Y Then...
需要两个操作(评估相等性和否定结果)而不是一个。但是,通过幕后的一些代码优化,谁知道实际会发生什么?...
但是,有些情况下无法避免被否定的情况;例如,Is
运算符没有否定形式(如Isn_t
或其他内容),因此在这种情况下,您需要说If Not X Is Y Then...