Поиск
 

Изучаем C Sharp (C#)

Программирование на C Sharp (C#) с нуля

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

Делегаты

В Си Шарп делегат это нечто указателя на функцию в других языках программирования.
Делеагы выполняют туже самую функцию, но более удобно и безопасно, то есть основное назначение это обратный вызов
то есть это посылка сообщения объектам, которые их породили.

Делегат определяется так



public delegate void Play(object music, int volume);




так как в C Sharp все является классом то и делегат в момент компиляции превращается в класс, наследуемый от system.Multicastdelegate
Создадим класс Car в котором будет делегат и два метода



namespace ConsoleApplication3
{
    class Program
    {
        
        static void Main(string[] args)
        {
            car c = new car("BMW");
            garage gar = new garage();
            gar.ProcCar(new car.CarDelegate(Run));
            gar.ProcCar(new car.CarDelegate(Jump));
        }
        public static void Jump(car c)
        {
            Console.WriteLine("Jump");
        }
        public static void Run(car c)
        {
            Console.WriteLine("Run");
        }
    }
    class garage
    {
        car c;
        
        public garage()
        {
            c = new car("BMW");
        }
        public void ProcCar(car.CarDelegate proc)
        {
            Console.WriteLine(proc.Method.ToString());
            proc(c);
        }
    }
    class car
    {
        public delegate void CarDelegate(car c);
        string _name;
        public car(string name)
        {
            this._name = name;
        }
    }
}








Метод ProcCar передает управление двум статическим методам, то есть мы добавляем указатель на функцию Run во внутреннюю таблицу указателей делегата CarDelegate

Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (1,67 - 3 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии

Комментирует Silver_off 12.07.2010 15:08:12
Бля, а чого немає відкликів ((((