ВУЗ:
Составители:
Рубрика:
82
Этим объявлением задается множество методов с некоторой сиг-
натурой, у которой параметры определяются списком, заданным в объ-
явлении делегата, и тип возвращаемого значения определяется типом
результата делегата. Например:
public delegate float Compute(float a,float b);
В данном случае, в переменной типа Compute можно будет сохранять
ссылки на методы, которые имеют два формальных параметра типа
float и возвращают значение типа float.
Объявление делегата может быть сделано в пространстве имен, на-
ряду с объявлениями других классов или внутри некоторого класса, на-
ряду с объявлениями методов и свойств; в этом случае делегат может
использоваться только в методах данного класса.
Делегаты описывают новый тип данных, а не задают реализации
методов. Классы, использующие делегат, могут создать экземпляры де-
легата. В конструкторе делегата в качестве параметра используется имя
метода, сигнатура которого соответствует описанию делегата. Напри-
мер:
Compute func = null;
func = new Compute(Plus);
или более краткий вариант:
func = Plus;
В данном случае, метод Plus имеет следующий заголовок:
public static float Plus(float a, float b) {...}
Экземпляры делегатов могут хранить ссылки не на один, а на не-
сколько методов. Для удобства работы, в классе делегатов переопреде-
лены две операции: "+=" и "-=". Они используются для добавления
ссылок в список вызовов экземпляров делегатов и удаления из списка,
соответственно.
func += new Compute(Multi); //или func += Multi;
Методы, которые присваиваются делегатам, уже должны быть
описаны, чтобы делегат мог работать. Однако существует еще один
способ задания значений делегатам, это использование анонимных ме-
тодов. Анонимный метод, это блок операторов, который используется в
качестве параметра для используемого делегата. Например:
Compute func1 = delegate(float a, float b)
{
float с = a+b;
return c;
};
Страницы
- « первая
- ‹ предыдущая
- …
- 80
- 81
- 82
- 83
- 84
- …
- следующая ›
- последняя »