Я создаю свой собственный тип для представления значений CSS (как пиксели, например, 12 пкс). Для сможения к add/subtract/multiply/... моего типа и ints, я определил два неявных оператора к и от интервала. Все работает отлично кроме одной вещи.. Если я пишу:
CssUnitBase c1 = 10;
Console.WriteLine(c1);
Я добираюсь "10" вместо "10 пкс" - неявное преобразование в интервал используется вместо этого ToString () метод. Как я могу предотвратить это?
Просто переопределите метод ToString
в CssUnitBase
и вызовите его, когда захотите, как строку.
Да, существует неявное преобразование в int
, а перегрузка WriteLine (int)
более конкретна, чем WriteLine (object)
, поэтому она будет используйте это.
Вы можете явно вызвать перегрузку WriteLine (object)
:
Console.WriteLine((object)c1);
... или сами вызвать ToString
, чтобы Console.WriteLine (string)
вызывается:
Console.WriteLine(c1.ToString());
... или вы можете просто удалить неявное преобразование в int
. Насколько это полезно для вас? Я вообще не сторонник неявных преобразований для такого рода вещей ... (Вы, конечно, можете оставить неявное преобразование из int
, если действительно хотите.)
Переопределите метод ToString () и используйте c1.ToString ().