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");
}
}
这个程序打印C#委托实例化
Jon says: Hello
Tom says: Hello
,而不是
Tom says: Hello
这去除不起作用:p -= jonsVoice;
但是,为什么?
能否请您澄清这个或获取有关与其他委托代理实例化一些有用的链接。我对卧底信息感兴趣。
谢谢。现在这是可以理解的 – Realeyes