为什么integer.equals(string)在包含相同值但不抛出类型不匹配异常时给出false?

Imr*_*zvi 1 .net c# equality equals

我有代码,我得到一个字符串作为输入,我将它与一个整数进行比较.

我看到整数变量也有一个Equals接受字符串参数的函数.

我直接用它来认为它会对它进行类型化.

它没有给出任何编译时或运行时错误,但它总是给出错误的结果.

例如,

int sessionId = 1;

string requestId="1"

return sessionId.Equals(requestId);
Run Code Online (Sandbox Code Playgroud)

sessionId.Equals(requestId) 总是假的.

这种行为的原因是什么?如果有原因,为什么他们允许它运行没有错误?

Cod*_*aos 5

整数和字符串总是不同的,因此"1".Equals(1)返回false.

它编译,因为object.Equals(object other)需要一个object作为右侧,因此接受任何类型.