// Продемонстрировать перегрузку методов.
«
using System;
class Overload {
public void OvlDemo() {
Console.WriteLine('Без параметров');
}
// Перегрузка метода OvlDemo с одним целочисленным параметром, public void OvlDemo(int a) {
Console.WriteLine('Один параметр: ' + a);
}
// Перегрузка метода OvlDemo с двумя целочисленными параметрами, public int OvlDemo(int a, int b) {
Console.WriteLine('Два параметра: ' + a + ' ' + b); return a + b;
}
// Перегрузка метода OvlDemo с двумя параметрами типа double, public double OvlDemo(double a, double b) {
Console.WriteLine('Два параметра типа double: ' + a + ' '+ b) ;
return a + b;
}
class OverloadDemo {• static void Main() {
Overload ob = new Overload(); int resl; double resD;
// Вызвать все варианты метода OvlDemo(). ob.OvlDemo();
Console.WriteLine();
ob.OvlDemo(2);
Console.WriteLine ();
resl = ob.OvlDemo(4, 6);
Console.WriteLine('Результат вызова метода ob.OvlDemo(4, 6): ' + Console.WriteLine ();
resl
' +
resD = ob.OvlDemo(1.1, 2.32);
Console.WriteLine('Результат вызова метода ob.OvlDemo(1.1, 2.32): resD);
}
}
Вот к какому результату приводит выполнение приведенного выше кода.
Без параметров Один параметр: 2 Два параметра: '4 6
Результат вызова метода ob.OvlDemo(4, 6): 10 Два параметра типа double: 1.1 2.32
Результат вызова метода ob.OvlDemo(1.1, 2.32): 3.42
Как видите, метод OvlDemo () перегружается четыре раза. Первый его вариант не получает параметров, второй получает один целочисленный параметр, третий — два целочисленных параметра, а четвертый — два параметра типа double. Обратите также внимание на то, что два первых варианта метода OvlDemo () возвращают значение типа void, а по существу, не возвращают никакого значения, а два других — возвращают конкретное значение. И это совершенно допустимо, но, как пояснялось выше, тип возвращаемого значения не играет никакой роли для перегрузки метода. Следовательно, попытка использовать два разных (по типу возвращаемого значения) варианта метода OvlDemo () в приведенном ниже фрагменте кода приведет к ошибке.
// Одно объявление метода OvlDemo(int) вполне допустимо, public void OvlDemo(int a) {
Console.WriteLine('Один параметр: ' + a);
}
/* Ошибка! Два объявления метода OvlDemo(int) не допускаются, хотя они и возвращают разнотипные значения. */ public int OvlDemo(int a) {
Console.WriteLine('Один параметр: ' + a); return a * a;
}
