我在silverlight应用程序中有一个比较两个字符串的条件,出于某种原因,当我使用==时,它返回false,而.Equals()返回true.

以下是代码:

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // Execute code
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // Execute code
}

为什么会这样?

推荐答案

==用于object类型的表达式时,它将解析为System.Object.ReferenceEquals.

Equals只是一个virtual方法,其行为也是如此,因此将使用被覆盖的版本(对于string类型,它会比较内容).

.net相关问答推荐

[x.x.x,)在Packages.lock.json依赖项中是什么意思?

在 F# 中处理 Option - Some(null) 的好策略是什么

有没有更好的方法使用 Pusher Channels 的批事件发布消息?

在数据网格中:如何在更改单元格 A 中的值后显示单元格 B 中的更改

NET 6:控制器方法不可访问

无法通过构建目标访问 dotnet 的环境变量

System.IO.Directory.Exists 在 LINQ 语句中失败,但在 foreach 循环中没有

AsyncLocal 的语义与逻辑调用上下文有何不同?

C#字符串的GetHashCode()是如何实现的?

DbContext 丢弃更改而不释放

CurrentCulture、InvariantCulture、CurrentUICulture 和 InstalledUICulture 之间的区别

List 和 IEnumerable 的实际区别

如何使用 C# 创建自签名证书?

立即检测客户端与服务器套接字的断开连接

从流中获取 TextReader?

更改 SqlConnection 超时

嵌套的 Try/Catch 块是个坏主意吗?

ADO.NET Entity Framework:更新向导不会添加表

使用 C# vs F# 或 F# vs C# 有什么好处?

如何卸载Microsoft .NET Core 1.0.0 RC2 - VS 2015 Tooling Preview 1?