Yurijnd.com
Четверг, 06.02.2025, 20:44
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

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

    Делегаты (Руководство по программированию на C#)

    Visual Studio 2013
     

    делегат - это тип, который представляет собой ссылки на методы с определенным списком параметров и возвращаемым типом.При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и возвращаемым типом. Метод можно вызвать (активировать) с помощью экземпляра делегата.

    Делегаты используются для передачи методов в качестве аргументов к другим методам. Обработчики событий — это нe что иное, как методы, вызываемые с помощью делегатов. Вы создаёте свой метод, а класс, такой как элемент управления Windows, может вызывать ваш метод при возникновении определенного события. В следующем примере показано объявление делегата:

     
     public delegate int PerformCalculation(int x, int y);
    

    Делегату может быть присвоен любой метод, соответствующий типу делегата, из любого доступного класса или структуры. Этот метод должен быть статическим методом или методом экземпляра. Это позволяет программно изменять вызовы метода, а также включать новый код в существующие классы.

    Примечание Примечание

    В контексте перегрузки метода его сигнатура не содержит возвращаемое значение. Однако в контексте делегатов, сигнатура содержит возвращаемое значение. Другими словами, метод должен иметь тот же возвращаемый тип, что и делегат.

    Благодаря возможности ссылаться на метод как на параметр, делегаты оптимально подходят для задания функций обратного вызова. Например, ссылка на метод, сравнивающий два объекта, может быть передана в качестве аргумента алгоритму сортировки. Поскольку код сравнения находится в отдельной процедуре, алгоритм сортировки может быть написан в более обобщенном виде.

    Общие сведения о делегатах

     

    Делегаты имеют следующие свойства.

    • Делегаты похожи на указатели функций в C++, но являются типобезопасными.

    • Делегаты позволяют производить передачу методов подобно обычным параметрам.

    • Делегаты можно использовать для определения методов обратного вызова.

    • Делегаты можно связывать друг с другом; например, при появлении одного события можно вызывать несколько методов.

    • Точное соответствие методов типу делегата не требуется. Дополнительные сведения см. в разделе Использование вариативности в делегатах (C# и Visual Basic).

    • В C# версии 2.0 введена концепция анонимных методов, которые позволяют передавать блоки кода в виде параметров вместо использования отдельно определенного метода. В C# 3.0 для краткой записи встроенных блоков кода введены лямбда-выражения. В результате компиляции как анонимных методов, так и лямбда-выражений (в определенном контексте) получаются типы делегатов. В настоящее время эти возможности называются анонимными функциями.Дополнительные сведения о лямбда-выражениях см. в разделе Анонимные функции (Руководство по программированию на C#).

    Содержание

     

    Спецификация языка C#

     

    Дополнительные сведения см. в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz