Фактически, компилятор будет неявно приводить Fred
к string
, но, поскольку вы объявляете переменную с ключевым словом var
, компилятор не будет знать о вашем действительном намерении. Вы можете объявить вашу переменную как строку и получить значение, неявно приведенное к строке.
string d = new Fred();
Говоря иначе, вы могли бы объявить дюжину неявных операторов для разных типов. Как вы ожидаете, что компилятор сможет выбирать между одним из них? По умолчанию компилятор выберет фактический тип, поэтому ему вообще не придется выполнять приведение.