Операторы определяются как статические методы, поэтому они не могут участвовать в полиморфизме. Таким образом, ваше второе утверждение использует определение ==
для object
(поскольку ваши переменные объявлены как object
), который проверяет только ссылочное равенство. Если переменные были объявлены как string
, перегрузка ==
для string
была бы использована, и второе утверждение было бы успешным.