違う型の同じ数値を比較するときに == と Equals で結果が異なる?
int型とlong型で同じ数値を比較すると == はtrueを返しますが、Equalsはfalseを返すことがあります。
Console.WriteLine("1 == 1L: {0}", 1 == 1L);
Console.WriteLine("1L == 1: {0}", 1L == 1);
Console.WriteLine("1.Equals(1L): {0}", 1.Equals(1L));
Console.WriteLine("1L.Equals(1): {0}", 1L.Equals(1));
// 出力:
// 1 == 1L: True
// 1L == 1: True
// 1.Equals(1L): False
// 1L.Equals(1): True
値型では基本的に == と Equals は同じだと思っていたのですが、違うのでしょうか?
また、もしEqualsだけ型を厳密に見ていると仮定すると、trueを返すこともあるのが謎です。