委托:平时我们喝水,要经历三个过程一是找水杯,二是倒水,三才是喝水。
平时实现一个功能,也是一样,需要创建一个对象,去分别调用各个方法。
委托就是建立一个方法链,配置好,让对象依次执行这条链上各个方法。
效果:提高代码效率,使代码容易维护。
步骤一:声明委托
格式:修饰符 delegate 返回类型 委托名(方法参数列表)
说明:修饰符--public protected private internal(只能在当前应用中访问)
deledate--委托说明符
实例:
public deledate int ABC(int i,int j)
步骤二:向委托注册方法的条件
说明:1.返回值类型相同
2.参数列表相同(其中变量的可以不同)
实例:
委托如:public deledate int ABC(int i,int j)
int F1(int a,int b) 可以注册到ABC委托中
void F1(int a,int b) 不可以注册到ABC委托中,返回值类型不同
int F1(int a) 不可以注册到ABC委托中,参数列表不相同
int F1(int a,string b) 不可以注册到ABC委托中,参数列表不相同
步骤三:委托实例化
作用:创建实例化,也可以注册方法到委托
实例:
namespace shilihuaweituo
{
public delegate int ABC(int i);
class Program
{
public int F1(int i)
{
Console.WriteLine("调用实例方法 F1(int i)");
return i;
}
static void Main(string[] args)
{
Program p = new Program();
ABC abc = new ABC(p.F1);
}
}
}
步骤四:委托注册方法
说明:委托除了在实例化的时候注册方法,还可以使用+=、-=,添加和移除方法。
实例:
namespace shilihuaweituo
{
public delegate int ABC(int i);
class Program
{
public int F1(int i)
{
Console.WriteLine("调用实例方法 F1(int i)");
return i;
}
public static int F2(int i)
{
Console.WriteLine("调用静态方法 F2(int i)");
return i;
}
static void Main(string[] args)
{
Program p = new Program();
ABC abc01 = new ABC(p.F1);
ABC abc02 = new ABC(F2);
abc01 += abc02;
}
}
}
步骤五:调用委托
实例: