委托:
函數指針的功能(C++),而且不像C++中只指向靜態的方法。、
所謂委托就是在執行的時候不會調用預先設定好的函數方法,而是直接在我們定義號的委托方法裡面調用委托函數就可以了,那後面的工作就會變的簡單許多,甚至增加了函數的可讀性和可維護性。
例子:delegate void eatdelegate(string food )//委托函數、
委托鏈的概念:
eatdelegate eatchain;
eatchain=zs+ls+ww;
eatchain("西瓜");
在這裡面+和-的作用太明顯了。
比如:
eatchain -/+=ls;//順著上面的來的。
匿名方法:是在C#2.0裡面的新加入的功能。
委托是如何代理動態方法的:
把委托作為方法的參數進行傳遞。。
事件event:
事件發行者:【發送者。】
事件訂閱者:【也稱為接受者。】
出版社和訂閱者之間的關系的事件程序:?
class publisher//出版社
{
public delegate void publish();//聲明事件所需要的代理(或者叫做委托。)
public event public onpublish;//事件的方法
public void issue()//觸發事件的方法
{
if ( onpublish!=null)
{
console.writeline("發行刊物");
onpublish();
}
}
}
class subscriber//訂閱者
{
public void recerve()//在事件訂閱者中定義事件處理程序。
{
console.writeline("訂閱者已經收到了刊物")
}
}
class story
{
static void main()
{
publisher pub=new publisher();
subscriber zs=new subscriber();
pub.onpublish+=new publisher.publish(zs.recerve);//向事件發行者訂閱一個事件。
pub.issue();//觸發事件
}
}
調用事件的時候使用的是對象名稱;
調用委托的時候使用的是類名稱;【因為委托是靜態的。】
事件發行者只會把事件發送給事件的訂閱者。
聲明一個事件首先要生命一個委托 。聲明委托的時候要使用void類型作為返回值。
.net framework事件的命名准則:
readonly:給這個成員賦值之後就不能改變它;
只讀的所以值實現get方法。
在引發事件的類中提供一個受保護的方法。以on加事件名稱命名,在該方法體中引發該事件;
本文出自 “黎黎原上草” 博客