progs.biz  
Начало > C# > Основы > Урок 30
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

С. Робинсон и др C# для профессионалов.
С. Робинсон и др C# для профессионалов.
Заказать на Озоне



Яндекс-цитирования

Основы 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" (т. е. первый метод из трех):

Подсказка для 2-х методов

Если нажимать стрелочки вверх-вниз на клавиатуре, то появятся подсказки и по другим двум методам.

Обратите внимание на два момента. Во-первых, методы не могут различаться только типом возвращаемого значения - они должны различаться именно по параметрам. Например, такой метод добавить в класс SomeClass нельзя:

public static bool SomeFunc()
{
    return true;
}

Во-вторых, в вызове третьего метода мы использовали приведение типов:

            ...
            Console.WriteLine(SomeClass.SomeFunc((float)10));
            ...

Если бы мы вызвали метод без слова float, то вызвался бы перегруженный вариант для целых чисел.

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz

 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь