Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Запомните! Если Вы не подписались на событие и его делегат пустой, возникнет ошибка.
Чтобы избежать этого, необходимо подписаться, или не вызывать событие вообще, как показано на примере (Т.к. событие — делегат, то его отсутствие является «нулевой ссылкой» null).
class ClassCounter //Это класс - в котором производится счет.
{
...
...
...
//Событие OnCount c типом делегата MethodContainer.
public event MethodContainer onCount;
...
...
...
public ClassCounter ()
{
onCount = () => { };
}
}
public event MethodContainer OnCount = delegate{};public event Action OnCount = delegate{};
public event EventHandler Changedclass Class {EventHandler сhanged;public event EventHandler Changed {add {changed += value; } remove { chnaged -=value; } }}public event EventHandler Changedpublic EventHandler Changedevent вносит свои тонкостиFunc<> и Action<>event и ничего не изменитсяА что кривого в событиях C#? Опишите чем конкретно недовольно прогрессивное человечество
private IDisposable _subscription;
...
_subscription = publisher.SomeEvents += subscriber.HandleSomeEvent;
...
_subscription.Dispose();publisher.SomeEvents -= subscriber.HandleSomeEvent;
publisher.SomeEvents += (sender, e) => { Debug.Log(“Some message.”); subscriber.HandleSomeEvent(sender, e); }publisher.SomeEvents -= ???
_subscription = observable.SomeEvents.Subscribe(observer.HandleSomeEvent);
_subscription.Dispose();
observable.SomeEvent -= observer.HandleSomeEvent;
События C# по-человечески