委托:
函数指针的功能(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加事件名称命名,在该方法体中引发该事件;