C# 入門

ホーム > デリゲート > C# 2.0 からのシンタックスの変更

C# 2.0 からのシンタックスの変更

デリゲートの基本 では、デリゲートの基本的な利用例とその意味を説明しました。

記事では「f1 にデリゲート型のインスタンスを設定する」という点を強調するために、旧式の書き方を採用しました。

この記事では新しい書き方を紹介します。

C# 2.0 でのデリゲートの書き方

新しいシンタックスを紹介する前に、旧式の方法を紹介します。

using System;

namespace DelegateTest1
{
	class Program
	{
		static void Main(string[] args)
		{
			Class1 c1 = new Class1();
c1.f1 = new Class1.f1Delegate(a);
c1.Test(); } static void a() { Console.WriteLine("I'm a()."); } } }

C# 1.0 では上のように new を用いて明示的にデリゲート型のインスタンスを作成しました。

C# 2.0 以降では次のように、メソッドを直接代入するように書くことが可能です。

using System;

namespace DelegateTest1
{
	class Program
	{
		static void Main(string[] args)
		{
			Class1 c1 = new Class1();
c1.f1 = a;
c1.Test(); } static void a() { Console.WriteLine("I'm a()."); } } }

ちなみに、どちらの方法で書いても、裏側では C# 1.0 の場合と同様にデリゲート型のインスタンスを作成するコードが出力されるので、 どちらが効率が良いということでもありません。

新しいシンタックスで書いたコードをディスアセンブルすると、次のようにデリゲートをインスタンス化していることが確認できます。

C# デリゲートシンタックス

したがってどちらで書いてもかまいませんが、当サイトでは "裏側の動き" を意識したいので、明示的にインスタンスかする方法で書くつもりです。

ホーム > デリゲート > C# 2.0 からのシンタックスの変更