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)就是正确的
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步