Иногда вы можете избежать множественных перегрузок, если используете только общие элементы разных типов, которые, по вашему мнению, должны обрабатываться по-разному. В вашем примере вам совсем не нужны перегрузки, поскольку все типы, которые вы хотите обработать, имеют метод ToString
, который они наследуют от object
. Таким образом, вы можете просто написать:
void print(object o)
{
Console.WriteLine(o.ToString());
}
Предположим, что вы хотите обрабатывать числа и строки по-разному, вы также можете использовать тот факт, что int
неявно приведен к double
. Так что нет необходимости в отдельной перегрузке int
, если она будет делать то же самое, что и на double
:
void print(double d)
{
Console.WriteLine("I am a number " + d.ToString());
}
print(1);
print(1.0); // both works
Таким образом, цель всегда состоит в том, чтобы найти общий базовый класс / интерфейс или неявное преобразование типов, чтобы избежать избыточных перегрузок методов.