КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Пример делегата для обычной функции
Лекция 20, 21. Делегаты и события Делегат – особый вид класса,хранящий ссылки на методы. Делегат – класс (ссылочный тип), инкапсулирующий (содержащий в себе) метод с указанной сигнатурой и возвращаемым типом.
Все делегаты являются объектами типа System.Delegate или System.MulticastDelegate. Общий синтаксис объявления делегата: [cпецификаторы] delegate тип возвращаемого значения метода имя делегата ([параметры]), где delegate – ключевое слово. тип возвращаемого значения – это тот тип, который будет возвращать функция, на которую ссылается делегат. параметры – это необязательные параметры, которые будут присутствовать у функции, на которую ссылается делегат. Примеры объявления делегата: delegate void MyDelegate(string s); //делегат, который может работать для всех методов, которые возвращают тип void и имеют один строковый параметр. public delegate int mydel(); delegate double MyD (double x); //”Почти универсальный делегат” delegate void My (object o) Алгоритм работы с делегатом: 1. Объявление делегата; 2. Определение метода, “подходящего” для работы с делегатом 3. В основной программе создание экземпляра делегата и связь его с определённой функцией; 4. Вызов метода через делегат. Делегат может быть применён: · Для обычной функции без класса; · Для метода внутри класса. class Program { //объявление делегата delegate void MyDelegate(string s); static void Myfunc(string s) { Console.WriteLine(s); } static void Main(string[] args) { //в конструкторе передается ссылка на функцию, которая делегируется (связыватся с делегатом) MyDelegate del = new MyDelegate(Myfunc);//создание экземпляра делегата del("Hello World");//вызов функции через делегат Console.ReadKey(); } } Пример делегата для метода класса namespace ConsoleApplication1 { class my { public string mystring;//поле класса public void Myfunc(string s) { // Вывод значения поля mystring, а также аргумента, переданного методу. Console.WriteLine(mystring + s); } } class Program { //объявление делегата delegate void MyDelegate(string s); static void Main(string[] args) { // Создадим экземпляр тестового класса. my A = new my(); // Создадим экземпляр делегата, содержащего, помимо ссылки на сам метод, также ссылку // на объект, для которого будет вызван метод. MyDelegate del = new MyDelegate(A.Myfunc); // Изменяем значение поля тестового объекта. A.mystring = "Hello, World!"; // Вызовем метод через делегат. del(" - from Delegate"); // Эквивалентен следующему вызову // A.Myfunc(" - from Instance Delegate"); // Снова изменим значение поля тестового объекта. A.mystring = "Good bye, World!"; // Снова обратимся к методу. del(" - from Delegate");
Console.ReadKey(); } }} Операции с делегатами: =,!=, +=,-=,= =. Делегаты можно сравнивать на равенство и неравенство. Два делегата равны, если они оба не содержат ссылок на методы, или если они содержат ссылки на одни и те же методы в одном и том же порядке. Сравнивать можно даже делегаты различных типов при условии, что они имеют один и тот же тип возвращаемого значения и одинаковые списки параметров. С делегатами одного типа можно выполнить операции простого и сложного присваивания: =, +=,-=.
Дата добавления: 2014-01-20; Просмотров: 491; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |