C#中“==”和equals()的区别

如以下代码:

1
2
3
4
5
6
7
8
9
int age = 25;
 
short newAge = 25;
 
Console.WriteLine(age == newAge);  //true
 
Console.WriteLine(newAge.Equals(age)); //false
 
Console.ReadLine();

age==newAge返回true,newAge.Equals(age)却返回false,为什么呢?

用==时,编译器位把short隐式转换为int后,比较两者的值。

而用equals()时,newAge.Equals(age),因为newAge是short类型的,equals()方法会是short.equals(short),但int无法隐式转换为short,所以返回false,但用age.equals(newage)就是正确的

 

posted @ 2014-04-28 14:11  卡萨丁·周  阅读(170)  评论(0编辑  收藏  举报