Перегрузка методов в C#
Под перегрузкой методов (функций или подпрограмм) понимают наличие в системе нескольких подпрограмм с одинаковыми именами, но реализующих разные алгоритмы. Например, при объявлении классов могут быть оформлены несколько конструкторов (с параметрами и без параметров). Различаются такие подпрограммы списком параметров. Параметры отличаются либо типами, либо порядком следования типов, либо количеством. Имя подпрограммы и список параметров называется сигнатурой функции. В сигнатуру не входит тип возвращаемого значения. При вызове подпрограммы выполняется проверка типов фактических параметров и сверяется с сигнатурами имеющихся функций. Если соответствие найдено, вызывается соответствующая подпрограмма. Если соответствие не обнаружено ни для одной из имеющихся сигнатур, выдается сообщение о том, что метода (или, что то же самое, подпрограммы) с указанной перегрузкой нет.
Ниже приведены две подпрограммы, определяющие максимальное число. В первой подпрограмме (сигнатура max(double a, double b)) определяется максимальное из двух чисел, во второй подпрограмме (сигнатура max(double[ ] a) разыскивается максимальное число в массиве. При сравнении сигнатур видно, что первый параметр хотя и является типом double, но во второй функции – это массив, а второй параметр отсутствует.
class Program
{
public static double max(double a, double b) // Максимальное из двух чисел
{
return a > b? a: b;
}
public static double max(double[] a) // Максимальное число в массиве
{
double m; //
m = -1.0E100; // Кандидат на максимальное число
foreach (double x in a)
if (x > m) m = x;
return m;
}
static void Main()
{
double x, y;
double [ ] ar = { 1, 2.5, 4.2, 3.9 };// Объявление массива ar с инициализацией
Console.WriteLine("Введите 2 числа ( дробная часть отделяется запятой)");
x = double.Parse(Console.ReadLine());
y = double.Parse(Console.ReadLine());
Console.WriteLine(" Максимальное число из введенных = "
+ max(x, y)); // Вызов функции max с двумя числами
Console.WriteLine(" Максимальное число в массиве = "
+ max(ar)); // Вызов функции max для массива ar
Console.ReadKey();
}
}
Ниже представлен результат выполнения программы.
Перегруженные методы могут создаваться в приложении, но часть таких перегрузок существуют в системе. Ниже приведены перегруженные методы подпрограммы, позволяющая получить случайное число. Ниже приведены перегруженные методы подпрограммы Next, позволяющей получить случайное число. В верхней строке указан номер перегрузки и форма вызова. Вызов этой функции без параметров
Перевод надписи: «Возвращает неотрицательное случайное число».
Вызов этой функции с одним параметром.
Перевод надписи: «Возвращает неотрицательное случайное число, меньшее заданного максимума».
maxValue: Верхняя исключаемая граница формируемого случайного числа, должна быть больше или равна нулю.
Вызов этой функции с двумя параметрами.
Перевод надписи: «Возвращает неотрицательное случайное число в заданном диапазоне».
minValue: Нижняя включаемая граница возвращаемого случайного числа.
Перегрузка методов в C#
Лекции по предмету «Программирование»