Skip to content

JA CSharp Keyword add

Codex edited this page Oct 11, 2026 · 2 revisions

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

C#: add

ディレクトリ C# · 実践的な指導

サブスクリプションを処理するイベント ハンドラー。値には新しいハンドラー デリゲートが含まれます。

簡単な例 (Example.cs)

この例を Example.cs として別に保存し、このページの他の例とは独立して実行してください。

Example.cs:

// PROJECT-EXAMPLE
var source = new Source();
System.Action handler = () => { };
source.Changed += handler;
source.Changed -= handler;
class Source
{
    public event System.Action Changed { add { System.Console.WriteLine("Add"); } remove { System.Console.WriteLine("Remove"); } }
}

結果:

Add
Remove

構文

event Action Changed { add { ... value ... } remove { ... } }

例 1: 基本形式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Notifier source = new();
        Action handler = () => Console.WriteLine("Changed");
        source.Changed += handler; source.Publish(); source.Changed -= handler; source.Publish();
    }
}
public class Notifier { private Action? handlers; public event Action Changed { add { handlers += value; } remove { handlers -= value; } } public void Publish() { handlers?.Invoke(); } }

例 2: 別の実用的な形式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Signal signal = new();
        Action handler = () => Console.WriteLine("Signal");
        signal.Fired += handler; signal.Fire(); signal.Fired -= handler;
    }
}
public class Signal { private readonly List<Action> handlers = []; public event Action Fired { add { handlers.Add(value); } remove { handlers.Remove(value); } } public void Fire() { foreach (Action handler in handlers.ToArray()) handler(); } }

公式ソース: Microsoft Learn。

Clone this wiki locally