是否有一个类似于C#的VB.net!运营商?

时间:2008-11-10 21:16:05

标签: vb.net

经过两年的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#的!运算符类似吗?

6 个答案:

答案 0 :(得分:13)

在您显示的上下文中,VB Not关键字确实等同于C#!运算符。但请注意,VB Not关键字实际上已重载以表示两个C#等价物:

  • 逻辑否定:!
  • 按位补码:~

例如,以下两行是等效的:

  • C#:useThis &= ~doNotUse;
  • VB: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运算符后面的表达式的逻辑含义。