首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String1.等式(String2)与string1==string2 C#的区别

String1.等式(String2)与string1==string2 C#的区别
EN

Stack Overflow用户
提问于 2011-11-11 17:48:37
回答 2查看 6.6K关注 0票数 0

可能重复:

C#: String.Equals vs. ==

Are string.Equals() and == operator really same?

有时,在两个字符串之间的条件下,我会写:

代码语言:javascript
复制
if(string1==string2) //Do something

有时我会写:

代码语言:javascript
复制
if(string1.Equals(string2)) //Do something

问题是,有时第一个不起作用,或误操作,这两个表达式之间有什么区别吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-11 17:50:27

只要两个操作数的编译时类型都是string,第一个操作数就会一直工作。

如果任一操作数的编译时类型不是string,它将使用正常的引用标识比较,而不是对字符串进行相等比较。基本上,您希望调用==(string, string)重载,而不是普通的==(object, object)重载。

请注意,即使string1为null,第一个也会成功,而在这种情况下,第二个将抛出NullReferenceException。要保留Equals调用,但要避免这个问题,另一种方法是调用static object.Equals(object, object) method

代码语言:javascript
复制
if (object.Equals(string1, string2))

但就我个人而言,在编译时类型合适的情况下,我只会使用==

票数 10
EN

Stack Overflow用户

发布于 2011-11-11 17:53:17

在两个字符串类型上使用==将执行引用标识检查,这意味着只有当两个引用指向同一个对象时才返回true。另一方面,Equals将执行值比较,如果引用指向等效对象,则返回true。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8097925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档