加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 检查字符串是空还是空的顺序?

发布时间:2020-12-15 03:58:12 所属栏目:百科 来源:网络整理
导读:对于我的编程考试,我不得不捍卫我写的代码.其中一条是: if(app.Logourl == "" || app.Logourl == null) 他问我是否有一个空字符串和空字符串之间的区别.我告诉他,区别是,null表示它不指向任何东西,所以没有实例化,但空字符串是. 考试后,我走到他面前问他是
对于我的编程考试,我不得不捍卫我写的代码.其中一条是:
if(app.Logourl == "" || app.Logourl == null)

他问我是否有一个空字符串和空字符串之间的区别.我告诉他,区别是,null表示它不指向任何东西,所以没有实例化,但空字符串是.

考试后,我走到他面前问他是否正确,因为我看到他脸上有一个滑稽的样子.他告诉我,这是真的,他们是不同的,但我检查的值的顺序是不正确的.

几天后,我相信订单没有任何问题.我对么?

TL; DR

if(app.Logourl == "" || app.Logourl == null)

相当于

if(app.Logourl == null || app.Logourl == "")

解决方法

可以这样做,因为System.String的==的重载调用 String.Equals,这允许null.

但是,这不是通用的:如果要检查字符串长度而不是使用==“”,则您的第一个代码片段将遇到麻烦:

if(app.Logourl.Length == 0 || app.Logourl == null) // <<== Wrong!

而第二个将是罚款:

if(app.Logourl == null || app.Logourl.Length == 0) // <<== Correct

其原因在于||的评估短路和&&操作符:一旦他们知道结果(对于||,对于&&),则停止评估).在上面的第二个代码片段中,如果app.Logourl为null,表达式的后半部分将被忽略,因此app.Logourl.Length不会抛出空引用异常.

注意:为了表彰像这样的检查,C#class library offers a convenience method for doing this check:

if (string.IsNullOrEmpty(app.Logourl)) {
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读