Kez*_*zer 22 vb.net operators query-string
我正在寻找关于VB.NET <>和Not运算符的令人兴奋的任务. Not- 我假设通过我的小用途 - 它的功能相当于!C#等语言,<>相当于!=.
在VB.NET中,一个常见的问题是对没有引用的对象执行布尔表达式,它出现了.所以如果我们这样做
If Request.QueryString("MyQueryString") <> Nothing Then
Run Code Online (Sandbox Code Playgroud)
如果查询字符串不存在,这实际上会失败.为什么,我不知道.老程序员完成的方式如下:
If Not Request.QueryString("MyQueryString") Is Nothing Then
Run Code Online (Sandbox Code Playgroud)
这往往有效.对我来说,它们在功能上是等效的,尽管操作员倾向于根据某些因素进行不同的比较,例如运算符优先级,为什么它在这种情况下不起作用,但我不知道,也没有找到任何相关材料.
我问这个,因为我必须编写标准文档,我们正在确定使用Not或者<>.关于它应该是哪种方式的想法,或者你应该这样做?
Cha*_*lie 31
我一直使用以下内容:
If Request.QueryString("MyQueryString") IsNot Nothing Then
Run Code Online (Sandbox Code Playgroud)
但仅仅因为语法上它读得更好.
在测试有效的QueryString条目时,我还使用以下内容:
If Not String.IsNullOrEmpty(Request.QueryString("MyQueryString")) Then
Run Code Online (Sandbox Code Playgroud)
这些只是我一直使用的方法,所以除了在回读代码时对我最有意义,我无法证明它们的用法.
我认为你的问题归结为"(Is和=)与(IsNot和<>)之间的区别".
两种情况的答案都是一样的:
=并且<>为值类型隐式定义,您可以为类型显式定义它们.
Is并且IsNot设计用于比较引用类型以检查两个引用是否引用相同的对象.
在您的示例中,您将字符串对象与Nothing(Null)进行比较,并且由于为字符串定义了=/ <>运算符,因此第一个示例有效.但是,当遇到Null时它不起作用,因为字符串是引用类型并且可以是Null.更好的方法(正如您猜测的那样)是使用Is/ 的后一版本IsNot.