Перегрузка
Сайт создан в системе uCoz
Меню сайта


Поиск по сайту
Loading


Форма входа


Помощь проекту

PayPal:

LiqPay or Credit/Debit Card:

W1 "Единый кошелек":
199990419310
WebMoney:
WME - E509190786817
WMZ - Z195499640086
WMU - U204403357554
WMR - R280087882619




Активные темы

  • Все вопросы касающиеся Neil Scope (7126)
  • инвертор на микропроцессоре с 12\220v с синусом на выходе (3)
  • Предложения по работе сайта и форума (18)
  • Изготовление ПП (7)
  • NeiLogicAnalyzer (48)
  • Двухполярный линейный БП с управлением на МК (91)
  • Заказ плат под NeilScope3 (12.2015) (60)
  • Первое знакомство с микроконтроллерами Silabs (105)
  • Куплю плату NS-3 (0)
  • Подскажите (0)



  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0



    Рекомендуемые браузеры: Mozzilla, Google Chrome






    Приветствую Вас, Пробегающий мимо · RSS 26.04.2024, 23:43

    Основы 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, то вызвался бы перегруженный вариант для целых чисел.