Да, есть неявное преобразование в int
, а перегрузка WriteLine(int)
более специфична, чем WriteLine(object)
, поэтому он будет использовать это.
Вы можете явно вызвать перегрузку WriteLine(object)
:
Console.WriteLine((object)c1);
... или вы могли бы позвонить ToString
самостоятельно, так что Console.WriteLine(string)
называется:
Console.WriteLine(c1.ToString());
... или вы можете просто удалить неявное преобразование в int
. Насколько это полезно для вас? Я вообще не поддерживаю неявные преобразования для такого рода вещей ... (Вы можете оставить неявное преобразование из int
, конечно, если вы действительно этого хотите.)