关于委托,一直困扰我挺久的,第一是在项目中不知道怎么去用,第二就是不是完全理解委托真正的用处,第三对于委托的用法也不是很熟悉。
今天就来记录一下对从中对于委托的理解吧!
委托定义:委托是一个对象,它知道如何去调用一个方法
委托:委托类型、委托实例
委托类型:定义了委托的实例可以调用哪种类型的方法(返回值类型、参数类型),就是委托的类型定义了方法的返回类型和参数
在写委托之前,首先要明确是三个步骤(俗称委托三部曲):
- 定义委托
- 实例委托
- 赋值委托
至于为什么要进行委托,作用何在?
那就是解耦,防止程序卡死之类的。如果这里不借助委托来进行,Main入口里面直接调用Com方法也是可以的,只不过通过委托,达到了解耦的作用
class Program { delegate int Transform(int x); //定义委托 static int Com(int x)=>x*x; //返回类型,参数类型与委托一致,说明可以通过委托调用此方法 static void Main(string[] args) { Transform t=new Transform(Com); //实例化委托 int result= t(3); //赋值委托 Console.WriteLine(result); // result:9 } }
实际上在赋值委托中进行了简写,实际上是通过Invoke去赋值给委托
int result=t.Invoke(3)