> For the complete documentation index, see [llms.txt](https://shuras-organization.gitbook.io/csharpunitystyleguide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shuras-organization.gitbook.io/csharpunitystyleguide/sobytiya-i-delegaty.md).

# События и делегаты

* При вызове делегата используйте  <mark style="color:blue;">`Invoke`</mark> и условный null-оператор <mark style="color:blue;">`?.`</mark>

```csharp
actionExapmle?.Invoke(args)
```

Причина в том, что здесь лаконично встроена проверка на null, которая будет необходима почти всегда во избежание неожиданностей.

* Использовать лямбда-выражения в качестве обработчика делегата стоит только в том случае, если тело метода не перегружено вычислениями. В остальных случаях обработчик лучше вынести в отдельный метод.

> Важно помнить о необходимости отписываться от событий, когда это возможно.&#x20;
>
> В случае использования обычных методов это просто — достаточно указать конкретный метод для отписки.&#x20;
>
> Однако, при использовании анонимных функций (лямбда-выражений), отписаться от события становится сложнее, так как анонимные функции нельзя напрямую отписать.
