logo search
CSharp_Prog_Guide

Делегаты

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

----

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

Примечание.

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

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