== は基本的な型でしか使わないな。整数及び実数、後は真偽値でのみ

組み込み参照型や値型は全てEqualsを使う。
nullである可能性がある場合はstaticなEquals
==は結局Equals呼んでるんでしょ。?

ちなみにインタプリタパターン使ってC#内で実に言語作るときに
演算子をオーバーロードできるのは凄い便利
パーサ作るときなんかも便利だな。