C#中的委托怎么理解呢
现在在学asp.netmvc接触了linq感觉对委托有点障碍,不知道怎么看方法的需求给生命委托,求大神指点下...
现在在学asp.net mvc 接触了linq 感觉对委托有点障碍,不知道怎么看方法的需求给生命委托,求大神指点下
展开
2个回答
展开全部
简单地理解委托就是用来动态代理与其签名相同的方法。
class Program
{
// 声明委托类型CalcCallback,原型如下:
public delegate double CalcCallback(double x, double y);
static void Main(string[] args)
{
// 下面使用3种方式初始化一个委托对象,前提
// 就是方法的签名与委托类型声明时的签名一样即可
// 1、使用命名方法方式初始化一个委托对象
CalcCallback add = new CalcCallback(Sum);
// 2、使用拉姆达函数方式初始化一个委托对象
CalcCallback sub=(x,y)=>{
return x-y;
};
// 3、使用匿名函数方式初始化一个委托对象
CalcCallback mul = delegate(double x, double y)
{
return x * y;
};
Console.WriteLine(add(1,2));
Console.WriteLine(sub(2, 1));
Console.WriteLine(mul(2, 2));
Console.ReadKey(true);
}
static double Sum(double x, double y) {
return x + y;
}
}
展开全部
1.委托的本质:就是函数的句柄,可以接收被调函数的地址,从而调用被调函数(函数参数还是自己提供)
2.什么时候使用:(1)函数不方便或不能在自己的类中实现;(2)想要使用的函数不在自己类中;
3.如何利用委托调用不在自己类中的函数?
(1)定义:先定义委托,参数根据最后实现的函数的参数决定(一般不在自己类中定义);
(2)声明、使用:声明委托变量(事件(函数)句柄EventHandler),在自己类中可以将委托变量当成函数使用;
(3)注册、实现:给句柄注册事件(函数),最后实现函数
4.关键点在于:在哪里声明的委托变量(句柄),换句话说,委托变量(句柄)属于谁?谁委托属于谁;
5.记住一句话:委托变量需要在自己类中声明和当成函数使用,在其他类中注册(当成变量(放函数地址的集合)使用)和实现
2.什么时候使用:(1)函数不方便或不能在自己的类中实现;(2)想要使用的函数不在自己类中;
3.如何利用委托调用不在自己类中的函数?
(1)定义:先定义委托,参数根据最后实现的函数的参数决定(一般不在自己类中定义);
(2)声明、使用:声明委托变量(事件(函数)句柄EventHandler),在自己类中可以将委托变量当成函数使用;
(3)注册、实现:给句柄注册事件(函数),最后实现函数
4.关键点在于:在哪里声明的委托变量(句柄),换句话说,委托变量(句柄)属于谁?谁委托属于谁;
5.记住一句话:委托变量需要在自己类中声明和当成函数使用,在其他类中注册(当成变量(放函数地址的集合)使用)和实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询