我对委托的初级理解

1.什么是委托?
委托实际是就是一个类。虽然声明的时候,没有方法体,但是在编译的时候它会编译成一个类。这个类继承了Delegate。 我们定义的委托 --> MulticastDelegate --> Delegate
委托在编译的时候会定义一个Invoke方法,当我们调用委托时,实际上调用的就是委托的Invoke方法。
2.委托有什么作用?
委托其实就是把方法当作参数传递在方法中间。我们把方法的引用保存在委托的变量中,在方法中调用这个委托。
3.声明委托
委托可以在类中声明,也可以在类的外部声明,用关键字delegate
public delegate void DGdel(); // 这是声明了一个公共的,没有形参,也没有返回值得委托。
4.委托的使用
在类中声明一个委托变量。如果要定义,那么就必须给变量传一个函数。
当我们给委托传参数的时候,这个函数的返回值类型,参数的个数,参数的类型都要和委托一样。值得注意的是委托变量的可访问性不能低于函数的可访问性。
public DGdel myDg = new DGdel(SayHi); // 定义一个委托,并把SayHi方法传给委托

myDg(); //  调用委托,实际上是调用的myDg.Invoke();


public void SayHi()
{
Response.Write("hello");
}
5.给委托追加多个方法
委托不仅可以有1个方法,还可以同时拥有多个方法。
在委托的父类中Invoke实际上是一个object类型的参数,当Invoke有多个的时候,参数就是Ojbect数组。所以委托可以有多个方法
myDg += new Dgdel(SayHiInSchool);


public void SayHiInSchool()
{
Response.Write("hello,我在学校");
}


移除一个方法
myDg -= new Dgdel(SayHiInSchool);
6.委托可以当做返回值
委托不仅可以作为参数,还可以作为函数的返回值使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值