经过两年的C#,我现在回到VB.net因为我现在的工作。在C#中,我可以在字符串变量上对null或false值进行简短的测试,如下所示:
if(!String.IsNullOrEmpty(blah))
{
...code goes here
}
但是我对如何在VB.net中执行此操作感到有些困惑。
if Not String.IsNullOrEmpty(blah) then
...code goes here
end if
如果字符串不为null或为空,上述语句是否意味着? Not
关键字的运作方式与C#的!
运算符类似吗?
答案 0 :(得分:13)
在您显示的上下文中,VB Not
关键字确实等同于C#!
运算符。但请注意,VB Not
关键字实际上已重载以表示两个C#等价物:
!
~
例如,以下两行是等效的:
useThis &= ~doNotUse;
useThis = useThis And (Not doNotUse)
答案 1 :(得分:10)
是的,他们是一样的
答案 2 :(得分:6)
Not
与!
完全相同(在Boolean
的上下文中。请参阅RoadWarrior关于其语义作为位算术补码的注释)。有一个特殊情况与Is
运算符结合使用来测试引用相等性:
If Not x Is Nothing Then ' … '
' is the same as '
If x IsNot Nothing Then ' … '
相当于C#的
if (x != null) // or, rather, to be precise:
if (object.ReferenceEquals(x, null))
此处,IsNot
的使用是优选的。不幸的是,它不适用于TypeOf
测试。
答案 3 :(得分:1)
它们的工作方式相同,直到您引用C或C ++代码。
例如,对Win32 API函数的结果不做,可能会导致错误的结果,因为在C == 1中为true,而在1上的按位NOT不等于false。
As 1 is 00000000001 Bitwise Not 11111111110 While false is 00000000000
然而在VB中它可以正常工作,如VB中的真== -1
As -1 is 11111111111 Bitwise Not 00000000000
答案 4 :(得分:0)
c#:boolean example1 = false;
boolean example2 = !example1;
vb.net:dim example1 as boolean = False
dim example2 as boolean = Not example1
答案 5 :(得分:-1)
借调。他们的工作方式相同。两者都颠倒了!/ not运算符后面的表达式的逻辑含义。