坚持 成长 每日一篇
c#委托事件类似OC的协议委托。不同的是OC的Delegate只能通知一个对象,C#的委托可以通知多个对象。
using System;
namespace DelegateDemo
{
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine ("Hello World!");
MyDog myDog = new MyDog ();
MyBlackDog myBlackDog = new MyBlackDog ();
Human man = new Human ();
//指定human对象的委托为myDog和myBlackDog
man.quickSpeck += myDog.Speack ;
man.quickSpeck += myBlackDog.Speack;
//让委托对象执行委托事件(通俗的意思就是让别人去做某件事:这是指让myDog和黑狗叫)
man.LetDogSpeck();
}
}
class MyDog
{
public void Speack()
{
Console.WriteLine ("我是MyDog");
this.run();
}
//默认的是私有的方法
void run()
{
Console.WriteLine ("MyDog run");
}
}
class MyBlackDog:MyDog
{
new public void Speack()
{
Console.WriteLine ("我是MyBlackDog");
}
}
class Human
{
//定义一个代理的类型
public delegate void QuickSpeck();
//定义一个委托对象(确切的说是对象数组)
public QuickSpeck quickSpeck;
//回调代理函数
public void LetDogSpeck()
{
if (quickSpeck != null) {
quickSpeck ();
}
}
}
}