デリゲートの簡易化


メソッド名から直接インスタンスを作る

これまで、デリゲートインスタンス生成式では new 演算子を用いて目的のデリゲート型を指定しなければなりませんでした。 従来の C# を用いたデリゲートインスタンス生成式は次のようなものです。

new デリゲート型 ( メソッド名 );

しかし、生成式の結果を格納する代入先の型が分かれば、対象のメソッドのみで作成しようとしているデリゲートインスタンスの型とメソッドの型が一致しているかどうかを正しく判断することができます。 そのため C# 2.0 では new 演算子を用いてデリゲートインスタンスを作成する作成するのは冗長であると考え、メソッド名を指定するだけでデリゲートインスタンスを作成することができます。

CallbackMethod callback = new CallbackMethod( Method );
CallbackMethod callback = Method;

上記では CallbackMethod 型のデリゲートインスタンスを作成するデリゲートインスタンス生成式です。 上の式は従来の C# の記述方法であるのに対して、下の式は C# 2.0 から可能となった簡略化された記述方法です。 この書き方でも、コンパイラによって自動的に解釈されて上の書き方と同じ意味となります。

delegate void CallbackMethod();

class Test {
	static void Main() {
		//従来のデリゲートインスタンス生成式
		CallbackMethod callback = new CallbackMethod( Method1 );
		callback();

		//C#2.0 のデリゲートインスタンス生成式
		callback = Method2;
		callback();
	}
	static void Method1() {
		System.Console.WriteLine("Method 1");
	}
	static void Method2() {
		System.Console.WriteLine("Method 2");
	}
}

このプログラムで Method1 メソッドを呼び出すためのデリゲートインスタンスは従来の方法で作成されていますが、その後の Method2 メソッドを呼び出すためのデリゲートインスタンス生成式は新しい書き方で作成されています。 より直観的で、生産性のある書き方です。



前のページへ戻る次のページへ