Тип делегата объявляется с помощью ключевого слова delegate. Ниже приведена общая форма объявления делегата:
delegate
где
Самое главное, что делегат может служить для вызова
// Простой пример применения делегата.
using System;
// Объявить тип делегата, delegate string StrMod(string str);
class DelegateTest {
// Заменить пробелы дефисами.
static string ReplaceSpaces(string s) {
Console.WriteLine('Замена пробелов дефисами.'); return s.Replace(' ', '-');
}
// Удалить пробелы.
static string RemoveSpaces(string s) { string temp = ''; int i;
Console.WriteLine('Удаление пробелов.'); for(i=0; i < s.Length; i++) if(s[i] != ' ') temp += s [i];
return temp;
}
// Обратить^строку. static string Reverse(string s) { string temp = ''; int i, j;
Console.WriteLine('Обращение строки. ') ; for(j=0, i=s.Length-1; i >= 0; i—, j++) temp += s [i];
return temp;
}
static void Main() {
// Сконструировать делегат.
StrMod strOp = new StrMod(ReplaceSpaces) ; string str;
// Вызвать методы с помощью делегата, str = strOp('Это простой тест.');
Console.WriteLine('Результирующая строка: ' + str);
Console.WriteLine();
strOp = new StrMod(RemoveSpaces); str = strOp('Это простой тест.');
Console.WriteLine('Результирующая строка: ' + str);
Console.WriteLine();
strOp = new StrMod(Reverse); str = strOp('Это простой тест.');
Console.WriteLine('Результирующая строка: ' + str);
}
}
Вот к какому результату приводит выполнение этого кода.
Замена пробелов дефисами.
Результирующая строка: Это-простой-тест.
Удаление пробелов.
Результирующая строка: Этопростойтест.
Обращение строки.
Результирующая строка: .тсет йотсорп отЭ
Рассмотрим данный пример более подробно. В его коде сначала объявляется делегат
