1.知识点什么是代表?/委托是函数(方法)的容器。//可以理解为函数(方法)的变量类型。//委托的本质是用一个类来定义函数(方法)的类型(返回值和参数的类型)。//不同的函数(方法)必须对应各自格式
顺晟科技
2022-12-05 09:15:19
240
1.知识点的代表是什么?/委托是函数(方法)的容器。//可以理解为函数(方法)的变量类型。//委托的本质是用类来定义函数(方法)的类型(返回值和参数的类型)。//不同的函数(方法)必须对应各自格式的委托。
2.知识点基本语法//关键字委托//语法:值委托(参数列表)的名称由访问修饰符委托返回;|//哪里写的?//可以在命名空间和类语句块中声明。//更多的是写在命名空间里。//简单的内存委托语法就是在函数声明语法前加一个委托关键字。
3.知识点定义了一个自定义代表。//默认情况下,访问修饰符不写成public。//private也可以用在其他命名空间中,但其他命名空间不能。//使用public //声明一个容器,该容器可用于存储不带参数和返回值的函数。//这里只定义了规则,但没有用到。
需要注意的是,没有多态性的委托概念不能重名。即使一个有引用的和一个没有引用的也不能同名。在同一语句块中
4.知识点使用定义的委托。//委托变量是函数的容器。//:委托通常用于。//1.作为一个班级的成员。//2.作为函数的参数。
在存储函数的第一种方法中,只需填写不带括号的函数名。
class { static void main(string[]args){ console。writeline(委托));//一个专门加载函数的容器my fun f new my fun(fun);控制台。WriteLine(1);控制台。WriteLine(2);控制台。WriteLine(3);控制台。WriteLine(4);控制台。writeline(5);调用().}静态void Fun() {Console。WriteLine(123123);}}表示您可以保存该功能,直到您需要它。
存储函数的第二种方法
class { static void main(string[]args){ console。writeline(委托));//一个专门加载函数的容器my fun f new my fun(fun);控制台。WriteLine(1);控制台。WriteLine(2);控制台。WriteLine(3);控制台。WriteLine(4);控制台。writeline(5);调用().//第二个方法my funf 2 funf 2();//函数调用有两种写法}静态void fun(){ console . writeline(123123);}}和带参数返回一样。
Myfun2f3ffun2控制台。WriteLine(F3(1));我的乐趣2 F4新我的乐趣2(fun 2);控制台。WriteLine(f4 .调用(3));Static int Fun2(int value ){返回值;}委托主要用作函数的参数。这具有延迟执行的优点。比如当一个敌人被击中时,需要计算伤害,然后得到伤害值送到委员会进行血扣。而不是先输入扣的血量再计算伤害。
使用TestFun时(函数名不带括号)。
5.知识组播代理可以存储多种功能。
my fun ff Funff Funff();静态void Fun(){控制台。WriteLine(123123);}执行两次。
请注意,如果您在委托初始化期间直接这样做,它将报告一个错误。
但是换一种方式写就好了。
这就说明了一个很重要的问题,那就是即使委托对象是空的。
然后我们可以在函数中使用这个特性。
我们在定义AddFun函数的时候,不需要把内容写死。我们在使用的时候,只需要传入相应的Fun和fun2函数即可。
同一委托可以删除此方法。
当委托容器被清空时,在执行委托时将报告一个错误。
一般委托
委托T MyFun3T,K(T v,K K);
6.知识点,系统定义的委托
//您需要使用命名控件
动作乐趣;//没有参数也没有返回的委托
Fun4//Funcstring函数的一般返回值的委托
Action int,string,XXX,XXX.acfun 5//对应动作的类型最多传递16个参数,不返回值。
Funint,int,xxxx fun 2 fun 6//fun的尖括号中最后一个类型是返回类型。其他参数类型。
静态字符串Fun4()
{
返回;
}
空函数5(int,string,xxx,xxx。)
{
}
05
2022-12
25
2022-11
15
2022-09
15
2022-09
21
2021-10
13
2021-07