上海崇明林业建设有限公司 网站,网站接入服务单位名称,建设局跟住建局一样吗,松江区网站开发前言
在C#中有一个小白谈之色变的知识点叫委托#xff0c;很多学了一两年C#的还不知道委托究竟是什么东西#xff0c;本文就来帮你彻底解开解惑#xff0c;从此委托就是小儿科#xff01;
1、委托的本质
委托也是一种类型#xff0c;大家知道所有的类型一定对应一种数据…前言
在C#中有一个小白谈之色变的知识点叫委托很多学了一两年C#的还不知道委托究竟是什么东西本文就来帮你彻底解开解惑从此委托就是小儿科
1、委托的本质
委托也是一种类型大家知道所有的类型一定对应一种数据比如Int类型那么它对应的就是Int类型的数据委托对应的是什么类型的数据呢委托对应的是方法类型由于委托是一个引用类型所以它存储的就是方法的地址我们操作委托实际上就是操作方法。
2、自定义一个无返回值的委托类型
在C#中我们使用delegate 关键字来定义委托类型由于委托对应的是方法也就是所谓的函数那么大家知道方法是分为有返回值的方法和无返回值的方法的。下面就使用delegate 关键字来定义一个无返回值的委托类型具体如下
2.1 定义一个委托类
这里使用了void 代表方法无返回值然后OutputValueDelegate是类名int xint y代表这个方法包含两个int类型的参数。 public delegate void OutputValueDelegate(int x, int y);//声明一个无返回值的委托类型2.2 声明一个委托类型的对象 OutputValueDelegate outputValueDelegate;//定义一个委托类型的对象2.3 定义一个委托类型匹配的方法
定义一个无返回值有两个Int类型参数的方法 private void OutputValue(int x, int y){Console.WriteLine(x y);} 2.4 为委托类型的变量赋值
由于委托对应的就是方法所以这里将方法名称直接赋值给委托对象即可如下 outputValueDelegate OutputValue;
2.5 调用委托
调用委托实际上就是调用委托对应的方法由于绑定的方法是将传入的两个值相加所以最后得到的值是3。 outputValueDelegate(1, 2);输出
33、自定义一个有返回值的委托类型
3.1 定义一个委托类
可以看到下面定义的一个委托类型返回值是int类型和无返回值委托类型相比将void关键字变成了int。 public delegate int GetMaxValueDelegate(int x, int y);//声明一个有返回值的委托类型3.2 声明一个委托类型的对象 GetMaxValueDelegate getMaxValueDelegate;//定义一个委托类型的对象3.3 定义一个委托类型匹配的方法
定义一个无返回值有两个Int类型参数的方法
private int GetMax(int x, int y){return x y ? x : y;}3.4 为委托类型的变量赋值
由于委托对应的就是方法所以这里将方法名称直接赋值给委托对象即可如下 getMaxValueDelegate GetMax;
3.5 调用委托
调用委托实际上就是调用委托对应的方法由于绑定的方法是获取两个输入值的最大值所以最后得到的值是2。 int val getMaxValueDelegate(1, 2);Console.WriteLine(val);输出
24、使用系统自带的无返回值委托类型
在C#中提供了一种无返回值委托类型叫Action这样我们就不用自己去定义委托类型了使用过程如下。
4.1 声明一个委托类型的对象 Actionint, int outputValueAction;//定义一个无返回值的委托对象4.2 定义一个委托类型匹配的方法
定义一个无返回值有两个Int类型参数的方法
private void OutputValue(int x, int y){Console.WriteLine(x y);} 4.3 为委托类型的变量赋值
由于委托对应的就是方法所以这里将方法名称直接赋值给委托对象即可如下 outputValueAction OutputValue;
4.4 调用委托
调用委托实际上就是调用委托对应的方法由于绑定的方法是将传入的两个值相加所以最后得到的值是3。 outputValueAction(1, 2);输出
35、使用系统自带的有返回值委托类型
在C#中提供了一种有返回值委托类型叫Func这样我们就不用自己去定义委托类型了使用过程如下。
5.1 声明一个委托类型的对象
这里注意Func的最后一个参数是返回值类型前面的是方法的参数类型 Funcint, int, int getMaxValueFunc;//定义一个有返回值的委托对象最后一个参数是返回值5.2 定义一个委托类型匹配的方法
定义一个无返回值有两个Int类型参数的方法
private int GetMax(int x, int y){return x y ? x : y;}5.3 为委托类型的变量赋值
由于委托对应的就是方法所以这里将方法名称直接赋值给委托对象即可如下 getMaxValueFunc GetMax;
5.4 调用委托
调用委托实际上就是调用委托对应的方法由于绑定的方法是获取两个输入值的最大值所以最后得到的值是2。 int val getMaxValueFunc(1, 2);Console.WriteLine(val);输出
2作者介绍
马工2017年硕士毕业一直从事上位机软件开发工作在我工作的第四年年薪突破了40万为了帮助跟我一样从底层出身的上位机软件工程师早日达到高级工程师的水平早日找到30万的工作我根据多年项目经验总结出了一系列可直接用于项目的C#上位机实战教程推荐给大家目前在CSDN已经超过一千人订阅如果你不甘贫庸想像我一样早日拿到高薪马工强烈推荐你早日学这套教程雷军曾说这个世界上有99%的问题别人都遇到过你要做的不是闷头干而是找这个领域的专家问一下这是最快速提升自己的方法
年入30万C#上位机实战必备教程推荐
1、《C#串口通信从入门到精通》 2、《 C#与PLC通信从入门到精通 》 3、《C# Modbus通信从入门到精通》 4、《 C#Socket通信从入门到精通 》 5、《C# MES通信从入门到精通》 6、《winform控件从入门到精通》