首页 > 后端开发 > C++ > C#字符串比较:==何时与equals()有所不同?

C#字符串比较:==何时与equals()有所不同?

DDD
发布: 2025-02-01 18:56:08
原创
322 人浏览过

C# String Comparison: When Does == Differ From Equals()?

理解 C# 中 == 和 Equals() 的区别

在 C# 中,您可能会遇到这种情况:使用 == 运算符比较两个字符串返回 false,而 Equals() 方法返回 true。要理解这种行为,必须掌握这些运算符的根本区别。

当用于对象时,== 运算符的值为 System.Object.ReferenceEquals。这意味着它检查两个字符串对象是否引用内存中的同一个对象。相反,Equals() 是一个虚方法,可以被自定义类型(包括字符串)重写。

对于字符串,使用 Equals() 的重写版本,它检查字符串的实际内容。因此,如果您比较两个具有相同字符但存储在不同内存位置的字符串,== 将返回 false,因为它们不是同一个对象引用,而 Equals() 将返回 true,因为它们的内容相等。

代码示例:

考虑以下代码片段:

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // 执行代码
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // 执行代码
}
登录后复制

在此代码中,这两个条件都将所选 ListBoxItem 的 Content 属性与字符串“Energy Attack”进行比较。虽然使用 Equals() 的第一个条件将计算为 true,但如果 Content 属性是一个新的字符串对象,则使用 == 的第二个条件可能会计算为 false。这是因为 == 运算符检查标识,而具有相同值的两个不同字符串对象并不相同。

因此,在 C# 中比较字符串相等性时,建议使用 Equals() 方法(它评估内容相等性),而不是 ==(它检查标识)。

以上是C#字符串比较:==何时与equals()有所不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板