Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
メソッドの追加と削除
メソッドの追加と削除
移譲先リストに複数のメソッドを「追加/削除」します。
前田稔(Maeda Minoru)の超初心者のプログラム入門


プログラムの説明
- デリゲートに登録するメソッドの数は一個だけとは限りません。
デリゲートにメソッドを追加する方法と削除する方法を説明します。
イベントに複数のハンドラを割り当てるプログラムは
複数のメソッドを割り当てる を参照して下さい。
Delegate の基礎は Delegate の基礎 を参照して下さい。
/*************************************************/
/*★ 複数のメソッドを「追加/削除」 前田 稔 ★*/
/*************************************************/
using System;
namespace ConsoleApp
{
delegate void TestDelegate();
class Class2
{
private string name;
public Class2( string name )
{
this.name = name;
}
public void method()
{
Console.WriteLine(name);
}
}
class Class1
{
static void Main(string[] args)
{
TestDelegate testdelegates = new TestDelegate( new Class2("test1").method );
TestDelegate test2 = new TestDelegate( new Class2("test2").method );
testdelegates += test2;
testdelegates += new TestDelegate(new Class2("test3").method);
testdelegates += new TestDelegate(new Class2("test4").method);
testdelegates();
testdelegates -= test2;
testdelegates();
Console.ReadLine();
}
}
}
|
- Class2 はデリゲートに登録されて実行されるクラスです。
コンストラクタで受け取った name を private string name に保存します。
method() で private string name を印字します。
class Class2
{
private string name;
public Class2( string name )
{
this.name = name;
}
public void method()
{
Console.WriteLine(name);
}
}
|
- デリゲート testdelegates と test2 を new Class2(文字列).method をパラメータとして生成します。
testdelegates に test2 を追加登録します。
test2 のようにデリゲートに格納してから追加しなくても、直接追加することも出来ます。
"test3" と "test4" を直接生成して testdelegates に追加してみました。
testdelegates() を実行すると "test1", "test2", "test3", "test4" が表示されます。
testdelegates -= test2; で "test2" を削除して、再び testdelegates() を実行します。
デリゲートの登録は「+=」で、削除は「-=」で行います。
TestDelegate testdelegates = new TestDelegate( new Class2("test1").method );
TestDelegate test2 = new TestDelegate( new Class2("test2").method );
testdelegates += test2;
testdelegates += new TestDelegate(new Class2("test3").method);
testdelegates += new TestDelegate(new Class2("test4").method);
testdelegates();
testdelegates -= test2;
testdelegates();
|

超初心者のプログラム入門(C# Frame Work)

※・