C#的事件(Event)和代理/委託(Delegate)例子
阿新 • • 發佈:2019-02-20
還是看例子最直接。
代理(Delegate)例子:
delegate void MyDelegate(string str,int index); // 宣告代理
class Test
{
public static void Show(string str, int index) // 宣告方法
{
Console.WriteLine("Show"+str+index.ToString());
}
public static void Main(string[] args)
{
MyDelegate md = new MyDelegate(Show); // 1.例項化代理,傳入方法
md("hello world", 22); // 2.傳入引數
}
}
事件結合代理的完整例子:
//事件用到的代理,以般以×××Handler的格式進行命名
private delegate void CryHandler(); // 無參代理
// 玩具小鴨的類
class Duck
{
// 定義小鴨的唱歌事件
public event CryHandler DuckCryEvent;
public Duck()
{
// 把小鴨唱歌的事件掛接到Cry方法上
DuckCryEvent += new CryHandler(Cry); // 註冊事件,傳入方法
}
// 小鴨唱歌事件對應的處理方法
public void Cry()
{
Console.WriteLine("我是一隻小鴨,呀呀呀....");
}
// 小鴨被搖動
public void BeShaked() //執行方法,引發cry事件
{
DuckCryEvent(); // 執行事件,傳入引數
}
}
class MyClass
{
public static void Main3(string[] args)
{
// 買一隻小鴨
Duck d = new Duck();
// 搖一搖小鴨,它就會調觸發小鴨的Cry事件,小鴨就會唱歌
d.BeShaked();
}
}
重要參考: