Consider this code:
int age = 25; short newAge = 25; Console.WriteLine(age == newAge); //true Console.WriteLine(newAge.Equals(age)); //false Console.ReadLin
When you pass int to short's Equals you pass object:
int
short
object
So this pseudocode runs:
return obj is short && this == (short)obj;