我是这样理解的:委托是对方法的引用,相当于方法的别名,也就是说委托与方法具有相同的行为。
委托变量说白了就是接受方法名作为参数的变量,当我们使用这个委托变量的时候就相当于调用了这个方法。
我也感觉"委托"就是方法别名,或者调用别人的方法时,不用原来的方法名,可以自己起一个有意义的名字(联想一下文件的快捷方式)
委托在现实生活中来说就是你叫别人去帮你做一件事(别人做事用到方法),然后他把事做了之后给你返回个结果。
你可以直接打电话给奥巴马,不过一般情况下是他的助手转接的,并且他的助手会告诉你,我们已经给你汇报啦,他的助手就是个委托。
委托是为事件而生的,事件用的是消息处理机制,任何委托的函数都由消息来触发,他在消息处理线程运行
我觉得委托的意思就是,委托Windows的消息处理去处理一个函数。
方法参数化
想把方法作为参数吗?就使用委托吧~
参数是什么作用? 答:运行时候可以传入不同的值,fun(int a),我第一次运行时传入5,第二次运行时候传入3
方法作为参数呢? 答:运行时候可以传入不同的方法,具体例子很多。
委托是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联。您可以通过委托调用方法。委托用于将方法作为参数传递给其他方法。事件处理程序就是通过委托调用的方法
using System;
//定义委托,它是一个函数声明,但是没有实现
public delegate string Mydelegate(string s);
// 定义类
public class A
{
// 定义方法,为了使用委托,方法签名与委托签名相同,就是返回类型 参数与委托签名相同
public string UpperMethod(string ss)
{
return ss.ToUpper();
}
// 定义方法,为了使用委托,方法签名与委托签名相同,就是返回类型 参数与委托签名相同
public string LowerMethod(string ss)
{
return ss.ToLower();
}
}
class Program
{
public static void Main(string[]args)
{
// 实例化类
A aa = new A();
//委托可以与你的方法绑定啦
Mydelegate del = new Mydelegate(aa.UpperMethod);
//Mydelegate del += new Mydelegate(aa.LowerMethod);
Console.WriteLine(del("adAAd"));
//给委托添加一个方法,形成委托链
del += aa.LowerMethod;
Console.WriteLine(del("adAAd"));
//调用委托,可以调到所有已经与此委托绑定的方法
}
}