Основы C#. Урок 30. Перегрузка.
Полные версии уроков (с картинками) можно найти по адресам
Урок 30. Перегрузка.
Основы C#. Урок 30. Перегрузка
При перегрузке мы имеем в одной области видимости два или более одноименных метода. Для того, чтобы при компиляции не было ошибок, эти методы должны различаться или типом параметров, или их количеством (или и тем и другим).
Вот пример:
using System;
namespace test
{
class SomeClass{
//Первый метод SomeFunc.public static int SomeFunc()
{
return 0;
}
//Второй метод SomeFunc.public static int SomeFunc(int k)
{
return k*k;
}
//Третий метод SomeFunc.public static float SomeFunc(float k)
{
return k;
}
}
class Test
{
static void Main(string[] args)
{
Console.WriteLine(SomeClass.SomeFunc());
Console.WriteLine(SomeClass.SomeFunc(10));
Console.WriteLine(SomeClass.SomeFunc((float)10));
}
}
}
Результатом выполнения прораммы будет 0 100 10.
Тут в классе SomeClass мы имеет три метода с одним названием - SomeFunc. Для простоты мы сделали все методы статическими, но это не важно. Наши методы различаются количеством параметров и типом. В тестовом классе Test мы вызываем эти методы. Обратите внимание на подсказку редактора - при написании метода SomeFunc возникает желтенькое окошко в котором написано "1 of 3" (т. е. первый метод из трех).
Если нажимать стрелочки вверх-вниз на клавиатуре, то появятся подсказки и по другим двум методам.
Обратите внимание на два момента. Во-первых, методы не могут различаться только типом возвращаемого значения - они должны различаться именно по параметрам. Например, такой метод добавить в класс SomeClass нельзя:
public static bool SomeFunc()
{
return true;
}
Во-вторых, в вызове третьего метода мы использовали приведение типов:
Краткое описание всех новых уроков и материалов на сайте progs.biz. Основные направления - языки программирования (Visual C++, Visual Basic.NET, C#, Delphi, Java), WEB-дизайн (HTML, PHP, PhotoShop, SSI), базы данных.