Содержание
- 2. Используя введенные делегаты, можно так определить ссылки: Row delRow; Print delPrint; После такого определения ссылки delRow
- 3. Экземпляр делегата может представлять как метод класса, так и метод объекта. Однако в обоих случаях метод
- 4. Пример Внешнее размещение определения делегата using System; public delegate int [] Row(int num); public delegate void
- 5. class Program { static void Main() { Row delRow; Print delPrint; delRow = new Row(Example.series); delPrint
- 6. Результат выполнения программы: 1 3 5 7 9 11 22 33 44 55 65 1 3
- 7. В CTS есть абстрактные классы System.Delegate и System. MulticastDelegate . Любой реальный делегат является наследником System.
- 8. Каждое определение делегата – типа вводит новый тип ссылок, производный от единого базового класса System.Delegate. От
- 9. В следующем примере с помощью делегатов реализуется сортировка списка книг. Каждый делегат сортирует книги по какому-то
- 10. using System; using System.Collections; namespace SortBooksDelegatesDemo { class Book // Содержит описание одной книги { //
- 11. class Books // Контейнер для множества книг { // Хранилище книг: public static ArrayList theBooks =
- 12. // Объявление делегата. Каждый экземпляр делегата сравнивает // книги по какому-то одному полю: public delegate int
- 13. // Метод SortBooks сортирует книги методом «всплывающего пузырька». // Критерий сортировки определяется экземпляром делегата SortItems public
- 14. public static void Main() { // Наполняем список книг: theBooks.Add(new Book("C# и платформа .NET", "Троэлсен", "Питер",
- 15. Использование методов экземпляров в качестве делегатов using System; delegate string StrMod( string str); class StringOps {
- 16. class DelegateTest { public static void Main() { StringOps so = new StringOps();// Создание экземпляра StringOps
- 17. Массивы делегатов Делегаты, точнее ссылки на экземпляры делегатов можно объединять в массивы. Такая возможность позволяет программисту
- 18. using System; class Robot { int x, y; public void right() { x++; } public void
- 19. Результаты выполнения программы Method = Void backward(), Target = Robot Method = Void backward(), Target =
- 20. Анонимные методы Анонимный метод – это, по существу блок кода, который передается делегату. using System; //
- 21. Передача аргументов анонимному методу. using System; // Объявление делегата delegate void Countit(int k); class AnonMethDemo {
- 22. Возвращение значения из анонимного метода using System; // Объявление делегата delegate int Countit(int k); class AnonMethDemo
- 23. Многоадресные групповые экземпляры делегатов Делегат (его экземпляр) может содержать ссылки сразу на несколько методов, соответствующих типу
- 24. Основные методы public static Delegate Combine(Delegate a, Delegate b) – метод объединяет(группирует) два экземпляра делегата, создавая
- 25. public virtual Delegate[ ] GetInvocationList() метод возвращает массив экземпляров делегатов , объединенных (сгруппированных) в конкретном многоадресном
- 26. Применение многоадресных экземпляров делегатов позволяет в рассмотренном выше примере расширить систему команд управления роботом, не изменяя
- 27. class Program { static void Main() { Robot rob = new Robot(); Steps delR = new
- 28. Результат выполнения программы: The Robot position: x = -1, y = -1 The Robot position: x
- 29. Делегаты и обратные вызовы. Обратным вызовом называют обращение из исполняемой функции к другой функции, которая зачастую
- 30. При разработке средств обратного вызова в языке С# было решено обеспечить программистов не только возможностью контролировать
- 31. using System; public delegate double Proc(double x); public class Series { int n; double xmi, xma;
- 32. class Program { static double mySin(double x) { return Math.Sin(x);} static double myLine(double x) {return x*5;}
- 33. Ковариантность и контрвариантность Ковариантность позволяет присвоить делегату метод, когда возвращаемый тип метода является классом, производным от
- 34. using System; namespace Demo { class X { public int val; } class Y : X{
- 36. Скачать презентацию