"不......没什么"与"......没有"

nnn*_*nnn 30 vb.net

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

例如

If var1 IsNot Nothing Then
...
End If
Run Code Online (Sandbox Code Playgroud)

If Not var1 Is Nothing Then
...
End If
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*els 32

If Not var1 Is Nothing Then
Run Code Online (Sandbox Code Playgroud)

是VB6的宿醉.以前不是IsNot,所以这是确定变量是否不是唯一的方法Nothing.在VB.NET中似乎是多余的.

  • `IsNot`是一个较新的运算符,在.NET2之前的版本中不存在. (4认同)
  • 我想知道它是否实际上更快或编译为相同。我的意思是,“Not x Is Nothing”首先检查类型相等,然后否定它。`x IsNot Nothing` 只检查类型不相等,运行时可能能够做得更快(愚蠢地可以想象,好像它逐个字段检查类型字段并且可以通过第一个不匹配的字段离开而不是通过每个字段来检查相等性 - 最重要的是最终否定结果)。 (2认同)

Ton*_* L. 8

foo IsNot Nothing

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

使用IsNot关键字代替Not......是什么都没有.


Tim*_*ker 7

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