【发布时间】:2014-02-11 23:27:27
【问题描述】:
考虑这段代码:
int age = 25;
short newAge = 25;
Console.WriteLine(age == newAge); //true
Console.WriteLine(newAge.Equals(age)); //false
Console.ReadLine();
int 和 short 都是原始类型,但与 == 比较返回 true,与 Equals 比较返回 false。
为什么?
【问题讨论】:
-
@OrangeDog 请思考问题,然后投票结束
-
这缺少明显的反向尝试:
Console.WriteLine(age.Equals(newAge)); -
重复没有解释这种行为;这就是
Equals()的一般含义。 -
几天前我在 Coverity 博客上回答了这个确切的问题。 blog.coverity.com/2014/01/13/inconsistent-equality
-
@CodesInChaos:规范实际上两次使用了术语“原始类型”,但从未定义它;这意味着原始类型是内置值类型,但这从未明确。我已向 Mads 建议,从规范中删除该术语,因为它似乎造成的混乱多于消除的混乱。