c# - 为什么当integer.equals(string)包含相同的值但不抛出类型不匹配异常时,它们给出false?

标签 c# .net equals equality

我有获取字符串作为输入的代码,并将其与整数进行比较。

我看到整数变量也有一个Equals函数,该函数接受字符串参数。

我直接使用它,以为它将进行类型转换。

它没有给出任何编译时或运行时错误,但始终给出错误的结果。

例如,

int sessionId = 1;

string requestId="1"

return sessionId.Equals(requestId);


sessionId.Equals(requestId)始终为假。

为什么会有这种行为的原因?如果有原因,为什么他们允许它正常运行?

最佳答案

整数和字符串始终不同,因此"1".Equals(1)返回false。

之所以进行编译,是因为object.Equals(object other)object作为右侧,因此可以接受任何类型。

关于c# - 为什么当integer.equals(string)包含相同的值但不抛出类型不匹配异常时,它们给出false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493047/

相关文章:

c# - 将 xml 值映射到枚举类型

c# - 如何使用 async 关键字并行调用方法?

c# - smtpclient 不适用于 Exchange 服务器,但适用于 smtp 服务器

java - 获取非重写的 equals 方法来使用 hashCode

java - 使用 contains(Object o) 比较两个不同的对象返回 false,当 equals(Object o) 返回 true

C# 检查 DataGridView 是否包含特定的单词

C# 属性必需和命名参数

c# - XElement.Load 和 XDocument.Load 之间有什么区别?

c# - 如果线程正在更改,则缓存 Controller 操作

java - 如果我不需要覆盖 equals,则覆盖 HashCode