class Program
{
delegate void StringProcessor(string input);
class Person
{
string name;
public Person(string name) { this.name = name; }
public void Say(string message)
{
Console.WriteLine("{0} says: {1}", name, message);
}
}
class Background
{
public static void Note(string note)
{
Console.WriteLine("({0})", note);
}
}
static void Main(string[] args)
{
Person jon = new Person("Jon");
Person tom = new Person("Tom");
StringProcessor jonsVoice, tomsVoice, background;
jonsVoice = new StringProcessor(jon.Say);
tomsVoice = new StringProcessor(tom.Say);
background = new StringProcessor(Background.Note);
StringProcessor p = new StringProcessor(jonsVoice);
p += tomsVoice;
p -= jonsVoice;
p("Hello");
}
}
このプログラムは印刷します
Jon says: Hello
Tom says: Hello
それ以外の
Tom says: Hello
この削除は機能しません:p -= jonsVoice;
しかし、なぜ?
これを明確にするか、別のデリゲートを使用したデリゲートのインスタンス化に関する便利なリンクを入手してください。秘密情報に興味があります。