Урок 30. Перегрузка

Автор: admin | 14 Июнь 2008 – 16:14 -


Урок 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;
}

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

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

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


Tags: , , , , , ,
Находится в Уроки C# | No Comments »

Ответить

Вы должны быть в системе, дабы комментировать.


C# — язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).