41

这里有没有人使用 VB.NET 并且对使用 VB.NET 有强烈的偏好或Not foo Is Nothing反对foo IsNot Nothing?如果是这样,为什么?

例如

If var1 IsNot Nothing Then
...
End If

If Not var1 Is Nothing Then
...
End If

我只想知道哪个更好?
他们都同样可以接受吗?

4

5 回答 5

48

If Not var1 Is Nothing Then

是VB6的宿醉。过去没有 IsNot,因此这是确定变量是否为 not 的唯一方法Nothing。它在 VB.NET 中似乎是多余的。

于 2013-09-20T06:11:10.020 回答
16

foo IsNot Nothing

以下行直接来自 Microsoft 的Visual Basic 编码约定

使用IsNot关键字代替Not...Is Nothing。

于 2016-03-30T17:55:35.073 回答
7

我会选择第一个变体——它读起来像英语,比第二个更容易理解/理解。除此之外,它们是等价的。

于 2013-09-20T06:05:14.157 回答
3

我在这里发现了一个类似的问题VB.NET - IsNothing vs Is Nothing,我觉得这个问题得到了详尽的回答。在 Jack Snipes 确定的答案中, http: //weblogs.asp.net/psteele/410336是一个提供一些额外细节的博客。从我喜欢和使用过的那些

IsNot Nothing

这也使我的代码更易于阅读和理解。

于 2015-05-03T09:01:52.550 回答
-1

使用 VB 7.0

If var1 Is Not Nothing Then

根据此“VBForums”链接生成“无效使用对象错误”。

If var1 IsNot Nothing Then

生成“编译错误:预期:然后或转到”

If Not IsNothing(var1) Then

像冠军一样工作

于 2016-06-23T03:44:08.100 回答