首页 > 后端开发 > C++ > C#字符串比较:我什么时候应该使用`==`vs.

C#字符串比较:我什么时候应该使用`==`vs.

Mary-Kate Olsen
发布: 2025-02-01 19:16:13
原创
713 人浏览过

C# String Comparison: When Should I Use `==` vs. `Equals()`?

C# 字符串相等性难题:==Equals() 的比较

C# 提供了两种比较字符串的运算符:==Equals()。虽然它们看起来可以互换,但它们表现出细微不同的行为,可能导致意想不到的结果。让我们通过一个具体的场景深入探讨这个语言难题。

在一个 Silverlight 应用程序中,一个条件比较两个字符串:

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

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

奇怪的是,== 比较返回 false,而 Equals() 调用返回 true。为什么会出现这种差异?

答案在于这些运算符的底层实现。当与对象表达式一起使用时,== 会评估为 System.Object.ReferenceEquals。此方法比较的是对象引用,而不是对象的 内容。在这种情况下,两个字符串存储在不同的内存位置,因此 ReferenceEquals 返回 false。

另一方面,Equals 是一个虚拟方法,可以被派生类型重写。对于字符串类型,重写版本比较字符串的实际 内容,从而返回 true。

因此,对于字符串相等性比较,建议使用 Equals(),它更直观,并且执行所需的基于内容的比较。

以上是C#字符串比较:我什么时候应该使用`==`vs.的详细内容。更多信息请关注PHP中文网其他相关文章!

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