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)就是正确的

原文地址:https://www.cnblogs.com/dachuang/p/3696289.html