Если у вас имеется опыт программирования на C/C++, то вам полезно будет знать, что делегат в C# подобен указателю на функцию в C/C++.
Тип делегата объявляется с помощью ключевого слова 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);
}
}
Вот к какому результату приводит выполнение этого кода.
Замена пробелов дефисами.
Результирующая строка: Это-простой-тест.
Удаление пробелов.
Результирующая строка: Этопростойтест.
Обращение строки.
Результирующая строка: .тсет йотсорп отЭ