Объектно-ориентированное программирование на С#. Андрианова А.А - 67 стр.

UptoLike

67
Глава 5. Функциональные типы в С#
5.1. Делегаты
При выполнении программы машинный код откомпилированной
функции загружается в оперативную память компьютера. Адрес, по
которому функция будет расположена в памяти, можно использовать для ее
вызова. Для этого в языке С# существует специальный тип данных делегат,
значением которого является адрес функции.
Делегат определяется типом возвращаемого значения и списком
формальных параметров тех функций, на которые он будет ссылаться.
Поэтому адреса различных функций, имеющих одинаковый прототип, могут
быть присвоены одной переменной-делегату. Имя функции соответствует ее
адресу.
Делегат определяется следующим образом:
delegate тип_функции имя_делегата(список_параметров);
где тип_функции определяет тип возвращаемого значения функции,
список_параметров список формальных параметров.
Покажем на примере способы работы с делегатами. В классе Math
имеются статические методы, вычисляющие значения следующих
математических функций:
double Sin(double); // y = sin(x)
double Exp(double); // y = exp(x)
double Atan(double); // y = arctg(x)
// и т.д.
Опишем делегат с именем FunctionDelegate, который определяет
новый тип данных, указывающий на любой из таких методов.
delegate double FunctionDelegate (double x);
Теперь можно создавать переменные этого типа:
FunctionDelegate f;
                     Глава 5. Функциональные типы в С#

                                                      5.1. Делегаты

     При выполнении программы машинный код откомпилированной
функции загружается в оперативную память компьютера. Адрес, по
которому функция будет расположена в памяти, можно использовать для ее
вызова. Для этого в языке С# существует специальный тип данных – делегат,
значением которого является адрес функции.
     Делегат определяется типом возвращаемого значения и списком
формальных параметров тех функций, на которые он будет ссылаться.
Поэтому адреса различных функций, имеющих одинаковый прототип, могут
быть присвоены одной переменной-делегату. Имя функции соответствует ее
адресу.
     Делегат определяется следующим образом:

   delegate тип_функции имя_делегата(список_параметров);


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

   double Sin(double);           // y = sin(x)
   double Exp(double);           // y = exp(x)
   double Atan(double);          // y = arctg(x)
   // и т.д.

     Опишем делегат с именем FunctionDelegate, который определяет
новый тип данных, указывающий на любой из таких методов.

   delegate double FunctionDelegate (double x);


     Теперь можно создавать переменные этого типа:

   FunctionDelegate f;



                                                                       67