Skip to content

RU CSharp Events

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

События и обработчики

Руководство C# · Примеры UO

event позволяет подписывать обработчики через += и удалять через -=. Вызов события выполняет объявивший его тип. Обработчик с внешним владельцем удерживает подписчика, поэтому подписку нужно завершать, когда она больше не нужна.

Простой пример (Example.cs)

Сохраните этот пример отдельно как Example.cs. Запускайте его независимо от остальных примеров страницы.

Example.cs:

// PROJECT-EXAMPLE
var source = new Source();
source.Changed += () => System.Console.WriteLine("Changed");
source.Raise();
class Source { public event System.Action? Changed; public void Raise() => Changed?.Invoke(); }

Результат:

Changed
sealed class Progress
{
    public event Action<int>? Changed;
    public void Report(int value) => Changed?.Invoke(value);
}

var progress = new Progress();
Action<int> handler = value => UO.Print($"Progress={value}");
progress.Changed += handler;
progress.Report(1);
progress.Changed -= handler;
sealed class Signal
{
    public event EventHandler? Ready;
    public void Raise() => Ready?.Invoke(this, EventArgs.Empty);
}

var signal = new Signal();
signal.Ready += (_, _) => UO.Print("Ready");
signal.Raise();

Эти примеры описывают события собственных C#-классов. Игровые события предоставляются отдельно API хоста; их имена, аргументы и жизненный цикл должны соответствовать документации конкретного события.

Официальная документация: События и обработчики — Microsoft Learn.

Clone this wiki locally