Repository navigation
RU CSharp Events
Codex edited this page Oct 11, 2026
·
2 revisions
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
event позволяет подписывать обработчики через += и удалять через -=. Вызов события выполняет объявивший его тип. Обработчик с внешним владельцем удерживает подписчика, поэтому подписку нужно завершать, когда она больше не нужна.
Сохраните этот пример отдельно как 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.
ClassicUO — Bad Newbie & C# Scripts IDE