如以下代码:
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)就是正确的