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)) { ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |