|
Делегаты
В Си Шарп делегат это нечто указателя на функцию в других языках программирования.
Делеагы выполняют туже самую функцию, но более удобно и безопасно, то есть основное назначение это обратный вызов
то есть это посылка сообщения объектам, которые их породили.
Делегат определяется так
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 Бля, а чого немає відкликів ((((
|
|