Базовая концепция
Перегрузка, или «перегрузка метода» - это название концепции наличия более одного метода с одинаковым именем, но с разными параметрами.
Например, Класс System.DateTime в c # имеет более одного метода ToString. Стандартный ToString использует стандартную культуру системы для преобразования даты и времени в строку:
new DateTime(2008, 11, 14).ToString(); // returns "14/11/2008" in America
в то время как другая перегрузка того же метода позволяет пользователю настраивать формат:
new DateTime(2008, 11, 14).ToString("dd MMM yyyy"); // returns "11 Nov 2008"
Иногда имя параметра может совпадать, но типы параметров могут отличаться:
Convert.ToInt32(123m);
преобразует десятичную дробь в int, тогда как
Convert.ToInt32("123");
преобразует строку в int.
Разрешение перегрузки
Чтобы найти наилучшую перегрузку для вызова, компилятор выполняет операцию с именем «разрешение перегрузки». В первом примере компилятор может найти лучший метод, просто сопоставив количество аргументов. Во втором примере компилятор автоматически вызывает десятичную версию метода replace, если вы передаете десятичный параметр, и вызывает строковую версию, если вы передаете строковый параметр. Из списка возможных выходных данных, если компилятор не может найти подходящий для вызова, вы получите ошибку компилятора, такую как «Наилучшая перегрузка не соответствует параметрам ...».
Вы можете найти много информации о том, как разные компиляторы выполняют разрешение перегрузки.