VB.NET-IsNothing vs Nothing

时间:2020-03-05 18:38:34  来源:igfitidea点击:

这里是否有人使用VB.NET并强烈赞成或者反对使用IsNothing而不是Is Nothing(例如,If IsNothing(anObject)或者IfIf Nothing ...)?如果是这样,为什么?

编辑:如果我们认为它们都同样可以接受,我们是否认为最好选择一个并坚持使用,还是可以将它们混合在一起?

解决方案

回答

VB充满了这样的事情,试图使它既"像英语一样"又让习惯于经常使用()和{}的语言的人感到满意。
例如,在" like english"方面,VB的关键词是" Ai n't",不,我不是在开玩笑。另一方面,我们可能已经知道大多数时间都可以将()与函数调用结合使用,但不必这样做。

我更喜欢IsNothing()...但是我使用C和C#,所以这很舒服。而且我认为它更具可读性。但是,无论我们觉得哪种感觉都更舒适。

回答

我倾向于"一无所有"替代方案,主要是因为它看起来更面向对象。

当然,Visual Basic没有Ai n't关键字。

回答

如果在执行MSIL的过程中对其进行观察,我们会发现它并没有编译成完全相同的代码。当我们使用IsNothing()时,它实际上是对该方法进行调用,而不是仅对表达式进行求值。

我倾向于使用"什么都不是"的原因是,当我否定它时,它变成了"我不是什么"而不是我个人觉得更易读的"不是不是(对象)"。

回答

我也倾向于像在SQL中一样,部分地使用Is Nothing版本。

回答

我同意"什么都不是"。如上所述,很容易否定" IsNot Nothing"。

我觉得这更容易阅读...

If printDialog IsNot Nothing Then
    'blah
End If

比这个...

If Not obj Is Nothing Then
    'blah
End If

回答

我最初使用IsNothing,但是我一直在较新的项目中使用Is Nothing,主要是为了提高可读性。我唯一坚持使用IsNothing的方法是,如果我要维护在整个过程中始终使用的代码,并且希望保持一致。

回答

我发现帕特里克·斯蒂尔在他的博客上回答了这个问题最好:避免IsNothing()

为了确保帕特里克·斯蒂尔(Patrick Steele)的职位受到赞誉,我没有在此处复制他的任何答案。但是我确实认为,如果我们要尝试确定是否使用"无"或者"无",则应该阅读他的文章。我认为我们会同意"无为"是最佳选择。