Создание Windows-приложений на основе Visual C#


           

Когда мы создаем класс, то


class Class1 { delegate void Mydelegate( string s);

static void Metod2)( string s) { Console.WriteLine(s); } //…продолжение кода. }

Когда мы создаем класс, то вначале мы его объявляем, а затем создаем объект класса (или его экземпляр). Мы объявили делегат Mydelegate, а теперь создадим экземпляр этого делегата del:

[STAThread] static void Main(string[] args) { Mydelegate del = new Mydelegate(Metod);

//…продолжение кода. }

Делегат Mydelegate связывается здесь с методом Metod. Теперь созданному экземпляру делегата передадим в качестве параметра переменную типа string, заключенную в кавычки:

[STAThread] static void Main(string[] args) { Mydelegate del = new Mydelegate(Metod); del("переменная типа string, которую принимает Metod, вызываемый делегатом del"); }

Запустите приложение (Ctrl+F5 — для консольных приложений — чтобы иметь возможность его разглядеть) (рис. 1.31).


увеличить изображение
Рис. 1.31.  Передача переменной делегатом методу

Как это работает? Экземпляру делегата del мы передаем переменную типа string, заключенную в скобках. Экземпляр del принадлежит делегату Mydelegate, который принимает метод Metod. Этот метод, в свою очередь, принимает переменную string s, которая выводится затем на экран. Обратите внимание, что сигнатуры делегата Mydelegate и метода Metod одинаковы! Если мы изменим тип принимаемой методом переменной на, например, int, среда выдаст ошибку.

using System;

namespace Delegate {

class Class1 { delegate void Mydelegate( string s);

static void Metod( string s) { Console.WriteLine(s); }

[STAThread] static void Main(string[] args) { Mydelegate del = new Mydelegate(Metod); del("переменная типа string, которую принимает Metod, вызываемый делегатом del"); } } }

Листинг 1.1. Полный листинг проекта Delegate

Создайте новое консольное приложение. Назовите его Delegate2. Поскольку этот пример очень похож на предыдущий, просто приведу полный листинг с комментариями:

using System;

namespace Delegate2 { //Создаем новый класс chelovek class chelovek { //Объявляем переменную slovo public string slovo; //Создаем метод govorit public void govorit( string s) { Console.WriteLine( slovo + s); } class Class1 { //Объявляем делегат Mydelegate, который имеет ту же саму сигнатуру, что и метод govorit delegate void Mydelegate(string s);


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий