一.委托的概述与声明
委托:类型化的函数指针 它的使用场景是:将方法作为参数进行传递
1.委托是一种引用数据类型(object,数组,string,class这些都是引用类型)
扩展: 程序设计之一:ocp原则(开闭原则)
允许你扩展 不允许你修改
2,委托的声明语法
委托对象只可指向具有与和自己一样的返回值类型和参数列表的方法
public delegate stging TransltionDelegate(string name)
委托的语法首先是修饰符类型public 然后是委托类型delegate关键字 然后就是返回值类型,然后就是委托方法名 , 最后就是委托参数列表 ,因为委托是一种特殊的类,所以使用委托与使用类相似
3.实例化委托的语法:
TransltionDelegate transform = new TransltionDelegate(方法名)
在c#2.0中,实例化委托对象可以简写为将方法引用直接指向委托。
TransltionDelegate transform = 方法名;
4.调用委托
一般可以使用委托对象的Invoke()方法调用委托
如:transform.Invoke("张三");
而后面为了简化委托,省略了Invoke方法,可以直接调用 语法如下:
transform("张三");
除此之外还有多番委托,这里就不叙述了,可以查看其他的博客文章进行学习
5.可以做以下案例进行学习
首先声明一个User用户类
class User
{
//定义委托
public delegate double UserAction(double x,double y);
//分别创建加减乘除的方法,
//这些方法必须和委托对象的返回值类型和参数列表一致这样才能将这些方法指向委托对象
public static double jia(double x,double y)
{
return x + y;
}
public static double jian(double x, double y)
{
return x - y;
}
public static double chen(double x, double y)
{
return x * y;
}
public static double chu(double x, double y)
{
return x / y;
}
public static void ee(double x,double y,UserAction userAction)
{
Console.WriteLine(userAction(x, y));
}
}
而后在主方法中调用ee方法进行加减乘除
static void Main(string[] args)
{
User.ee(10,10,User.jia); //将User.jia方法作为委托,委托给userAction对象
}