特产网站建设规划书,中国十大互联网公司,广西壮族自治区图书馆官网,找人建站做网站需要注意什么问题什么是委托#xff1f;委托是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托特别用于实现事件和回调方法#xff01;使用委托:public delegate void MyDelegateDemo();private void HelloWorld(){Console.WriteLine(Hello World);}public … 什么是委托委托是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托特别用于实现事件和回调方法使用委托:public delegate void MyDelegateDemo();private void HelloWorld(){Console.WriteLine(Hello World);}public void Print(){MyDelegateDemo myDelegateDemo;myDelegateDemo HelloWorld;myDelegateDemo();}首先我们可以看出我们使用委托时:第一步定义一个委托类型 public delegate void MyDelegateDemo();第二步实例化委托MyDelegateDemo myDelegateDemo;第三步定义一个跟委托类型相匹配的函数private void HelloWorld(){Console.WriteLine(Hello World);}第四步将函数交给委托实列myDelegateDemo HelloWorld;最后我们才能使用该委托说一说我对委托的理解:比如你知道定义一个普通变量int i;这个变量i会在后续的方法中使用比如说private void PrintInt(int i){Console.WriteLine(i);}我们后续需要输出不同的值的时候改变一下变量即可那么我们定义一个委托变量MyDelegateDemo myDelegateDemo;和普通变量不同的是MyDelegateDemo类型是我们自己定义的类型而已。使用private void PrintDelagate(MyDelegateDemo myDelegateDemo){myDelegateDemo();}其实和普通变量使用方法一样而已!而区别在于普通变量存放的是不同的变量而委托变量存放的是不同的方法通过这个例子我们看出private void HelloWorld(){Console.WriteLine(Hello World);}public void Print(){PritfDocument(HelloWorld);}private void PritfDocument(MyDelegateDemo myDelegateDemo){Console.WriteLine(来到了打印店);Console.WriteLine(打印的内容是);myDelegateDemo();Console.WriteLine(离开了打印店);}可以看到输出内容是简化我们在使用委托的时候定义起来是不是很麻烦觉得很烦微软也想到了这一点所以Action和Func就出来了这两个有什么区别呢两者的区别在于Action没有返回值而Func有返回值那么我们就可以简化一下PritfDocument方法private void PritfDocument(Action myDelegateDemo){Console.WriteLine(来到了打印店);Console.WriteLine(打印的内容是);myDelegateDemo();Console.WriteLine(离开了打印店);}但是这样也很烦 我们还需要自己去定义一个方法呢所以我们使用匿名方法去掉这个步骤PritfDocument(delegate () { Console.WriteLine(Hello World); }private void PritfDocument(Action myDelegateDemo){Console.WriteLine(来到了打印店);Console.WriteLine(打印的内容是);myDelegateDemo();Console.WriteLine(离开了打印店);});那使用匿名方法让代码看起来不是那么的简洁我们还能不能优化呢c#作为世界上最好的语言但是也是可以的使用Lambda来简化最后变成了PritfDocument(() Console.WriteLine(Hello World));private void PritfDocument(Action myDelegateDemo){Console.WriteLine(来到了打印店);Console.WriteLine(打印的内容是);myDelegateDemo();Console.WriteLine(离开了打印店);}最后大家如果喜欢我的文章还麻烦给个关注, 希望net生态圈越来越好