Lektsia_4VP
.pdfТема 3
Делегаты и события
Делегаты и события
Обратный вызов (callback) представляет собой вызов
функции, передаваемой в другую функцию в качестве
параметра.
Делегаты и события
Делегаты и события
public delegate double ProcessResults(double x, double у); public delegate void Del(string message);
public static void DelegateMethod(string message)
{
System.Console.WriteLine(message);
}
…
Del handler = DelegateMethod; handler("Hello World");
Делегаты и события
Делегаты и события
Класс 1 |
Класс 2 |
|
Подписчик 1 |
|
Издатель |
Класс 3
Подписчик 2
Делегаты и события
public delegate void EventHandler(Object sender, EventArgs e);
Объявление события:
public event EventHandler AgeChanged;
Генерация события:
AgeChanged(this, new EventArgs()); - фактически просто вызов этого события
Такой вызов метода пройдет без ошибок только в том случае, если есть хотя бы один подписчик для нашего события. Если подписчиков нет, то AgeChanged будет равна нулю, и данный вызов сгенерирует исключительную ситуацию.
Делегаты и события
try
{
AgeChanged(this, new EventArgs());
}
catch (Exception)
{
//возникло исключение
}
Однако, это не самый лучший вариант!!!
Делегаты и события
if (AgeChanged!=null)
{
AgeChanged(this, new EventArgs());
}
Делегаты и события
int _age; public int Age
{
get { return _age; } set
{
if (value<0)
{
throw new Exception("Возраст не может быть отрицательным");
}
_age = value;
if (AgeChanged!=null)
{
AgeChanged(this, new EventArgs());
}
}
}