Данные в аргументах события в C#
Когда вместе с событием нужно передать числа
или строки, вводят класс аргументов,
наследник EventArgs. Событие объявляют
в стандартной форме с типом аргументов в угловых скобках.
Запишем класс аргументов с полем, источник с методом оповещения и обработчик, который читает переданное значение:
void OnChanged(object? sender, ValueEventArgs e) {
Console.WriteLine(e.Value);
}
Meter meter = new Meter();
meter.Changed += OnChanged;
meter.Set(7);
class ValueEventArgs : EventArgs {
public int Value;
}
class Meter {
public event EventHandler<ValueEventArgs>? Changed;
public void Set(int value) {
Changed?.Invoke(this, new ValueEventArgs { Value = value });
}
}
Сделайте класс TextEventArgs с полем
Text, класс Speaker
с полем оповещения Say и методом,
который передаёт строку подписчикам в аргументах.
Подпишите обработчик, выводящий переданный текст,
и добейтесь вывода "hi" при вызове метода.
Сделайте класс ScoreEventArgs с полем
Points, класс Game с оповещением
Scored и методом, который сообщает новое
число очков. Подпишитесь и выведите Points
после одного вызова метода с 3.