做网站所需要哪方面的知识,网站建设需要什么教材,健身网站怎么做,wordpress极简免费主题C#-委托delegate
通常情况下#xff0c;函数内部需要调用其他函数来实现代码的重用#xff0c;但这样有一个问题#xff1a; 如果需要更换所调用的函数则需要对该函数的定义再次修改#xff0c; 事实上#xff0c;在程序运行过程中#xff0c;函数也是作为一个存储在堆中…C#-委托delegate
通常情况下函数内部需要调用其他函数来实现代码的重用但这样有一个问题 如果需要更换所调用的函数则需要对该函数的定义再次修改 事实上在程序运行过程中函数也是作为一个存储在堆中的对象 这样我们也可以通过设置引用函数的变量的方式实现方法调用的修改 这种引用函数的变量被称为委托类型变量。 使用引用类型步骤如下
1、声明委托数据类型
由于函数可以通过名称、返回值、参数类型及个数等方面区分出许多不同类型。 因此使用委托类型需要首先声明所调用的函数属于什么类型格式如下
public delegate T FunctionTypeT(T a,T b);从类型定义中我们可以看到委托类型所调用的函数需要返回值类型和参数列表匹配才能正常使用。 对于类型多样的返回值和参数列表可以定义泛型委托
2、在函数生命时使用定义好的委托类型做参数
public static T CallT(T a,T b,FunctionTypeT functionName) where T:struct
{return functionName(a,b);
}3、存在多个除函数名外相同类型的函数可以调用
static int Add(int a,int b)
{return a b;
}
static int Sub(int a,int b) { return a - b; }4、函数调用时将函数名作为参数传递
Console.WriteLine(ToolTestDelegate.Callint(2, 3, Add));
Console.WriteLine(ToolTestDelegate.Callint(2,3,Sub));5、System空间中定义了很多委托最多可以有16个参数
视图-对象浏览器
1Func带返回值的委托
Funcint, int, int func Add;
Console.WriteLine(func(1, 2));2Action不带返回值的委托
ActionAnimal action MakeAnimal2;
action(new Dog());6、委托合并委托多播
d1 method1;
d2 method2;
d3 d1 d2;
d3(C);//同时调用method1和method2