C# 入門

ホーム > デリゲート > ジェネリックデリゲート

ジェネリックデリゲート

C# 3.0 からはジェネリックデリゲート (generic delegates) がサポートされました。

これによって、デリゲートは一層簡潔に記述可能になりました。

ジェネリックデリゲート

戻り値が無い場合は System.Action を、戻り値があるときは System.Func を利用することで事前にカスタムのデリゲート型を定義することなく、 デリゲートを利用できます。

次の例は引数、戻り値共に無いデリゲート f1 を定義して、それを利用する例です。

using System;

namespace DelegateTest1
{
	class Class3
	{
		public Action f1;

		public void Test()
		{
			if (f1 != null)
			{
				f1();
			}
		}
	}
}

ここでは匿名メソッドを利用してデリゲートを追加しています。

using System;

namespace DelegateTest1
{
	class Program
	{
		static void Main(string[] args)
		{
			Class3 c3 = new Class3();
			c3.f1 = delegate()
			{
				Console.WriteLine(
					"Hello!");
			};
			c3.Test();
		}

	}
}

実行結果は次の通り。

Hello!

引数、戻り値がある場合

戻り値無しでパラメータをとる場合は次のように、Action を用いて <、> にパラメータリストを記述します。

	public Action<int, int> f1;

戻り値がある場合は、Func を用いて次のように書きます。

	public Func<int, int, int> f1;

このとき、パラメータリストの最後が戻り値の型を定義します。

ジェネリックデリゲート

ホーム > デリゲート > ジェネリックデリゲート