C# イベントのサンプル

C#のイベントのサンプルです。

目次

サンプル イベントとは
  イベントのサンプル
  イベントに匿名メソッドを登録する

イベントとは

event デリゲートの型 イベントの名称
  • イベントに、メソッドの登録と削除ができます。
    →登録するメソッドは、delegateの引数と戻り値の型に一致している必要があります。
  • イベントにメソッドを=で代入できません。
  • イベントにメソッドを+=で代入した場合は、メソッドの追加になります。
    →メソッドを2つ追加した場合、メソッドが連続して実行されます。
  • イベントにメソッドを-=で代入した場合は、メソッドの削除になります。
    →匿名メソッドではなくメソッドを指定するようにします。
  • eventキーワードを使用します。
  • 以下は、Microsoftのイベントのリンクです。
    https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/events/

イベントのサンプル

イベントのサンプルです。

using System;

delegate void delegate1();

class Class1
{
	public event delegate1 PrintMoji;
	public void Print1()
	{
		PrintMoji();
	}
}
class Test1
{
	public static void Main()
	{
		Class1 c1 = new Class1();
		c1.PrintMoji += new delegate1(Hello1);
		c1.Print1(); // hello
		c1.PrintMoji -= new delegate1(Hello1);
		c1.PrintMoji += new delegate1(Hello2);
		c1.Print1(); // こんにちは
	}
	public static void Hello1()
	{
		Console.WriteLine("hello");
	}
	public static void Hello2()
	{
		Console.WriteLine("こんにちは");
	}
}

3行目は、デリゲートを定義しています。引数なしで戻り値なしです。
7行目は、イベントを定義しています。
18行目は、イベントにメソッドを追加しています。
20,21行目は、メソッドを削除して追加しています。

イベントに匿名メソッドを登録する

using System;

delegate void delegate1();

class Class1
{
	public event delegate1 PrintMoji;
	public void Print1()
	{
		PrintMoji();
	}
}
class Test1
{
	public static void Main()
	{
		Class1 c1 = new Class1();
		c1.PrintMoji += delegate() { Console.WriteLine("hello");};
		c1.PrintMoji += delegate() { Console.WriteLine("こんにちは");};
		c1.Print1(); // hello こんにちは
	}
}

18,19行目は、匿名メソッドです。
連続して追加しているので20行目は、文字列が2つ表示されます。

関連の記事

C# デリゲートのサンプル
C# ラムダ式のサンプル

△上に戻る