Во-первых, есть разность. Для чисел
> 2 == 2.0 True > 2.Equals(2.0) False
И для строк
> string x = null; > x == null True > x.Equals(null) NullReferenceException
В обоих случаях == ведет себя более полезно, чем .Equals
==
.Equals