C# delegate,Action,Func,Event 使用
发布人:shili8
发布时间:2025-01-30 21:25
阅读次数:0
**C#代理、动作、函数和事件**
在 C# 中,代理(delegate)、动作(action)、函数(func)和事件是四种重要的编程概念,它们使得我们能够以更灵活和高效的方式编写代码。
###代理(Delegate)
代理是一种类型安全的回调函数,它允许你将方法作为参数传递给另一个方法。代理可以看作是一个接口,定义了一个或多个方法签名。
csharp// 定义一个代理类型,表示一个返回int值的方法public delegate int MyDelegate(int a, int b);
使用代理,我们可以将方法作为参数传递给另一个方法,如下所示:
csharppublic class Program{ public static void Main() { // 定义一个代理实例,指向一个具体的方法 MyDelegate del = new MyDelegate(MyMethod); // 使用代理调用具体的方法 int result = del(10,20); Console.WriteLine(result); // 输出:30 } public static int MyMethod(int a, int b) { return a + b; } }
### 动作(Action)
动作是一种不返回值的代理类型,它通常用于表示一个方法,仅仅执行某些操作,而不需要返回任何结果。
csharp// 定义一个动作类型,表示一个不返回值的方法public delegate void MyAction(int a, int b);
使用动作,我们可以将方法作为参数传递给另一个方法,如下所示:
csharppublic class Program{ public static void Main() { // 定义一个动作实例,指向一个具体的方法 MyAction act = new MyAction(MyMethod); // 使用动作调用具体的方法 act(10,20); } public static void MyMethod(int a, int b) { Console.WriteLine(a + b); // 输出:30 } }
### 函数(Func)
函数是一种返回值的代理类型,它通常用于表示一个方法,需要返回某些结果。
csharp// 定义一个函数类型,表示一个返回int值的方法public delegate int MyFunction(int a, int b);
使用函数,我们可以将方法作为参数传递给另一个方法,如下所示:
csharppublic class Program{ public static void Main() { // 定义一个函数实例,指向一个具体的方法 MyFunction func = new MyFunction(MyMethod); // 使用函数调用具体的方法 int result = func(10,20); Console.WriteLine(result); // 输出:30 } public static int MyMethod(int a, int b) { return a + b; } }
###事件事件是一种特殊类型的代理,它用于表示一个方法,需要被其他方法监听和响应。
csharp// 定义一个事件类型,表示一个返回int值的方法public delegate void MyEvent(int a, int b);
使用事件,我们可以将方法作为参数传递给另一个方法,如下所示:
csharppublic class Program{ public static void Main() { // 定义一个事件实例,指向一个具体的方法 MyEvent ev = new MyEvent(MyMethod); // 使用事件调用具体的方法 ev(10,20); } public static void MyMethod(int a, int b) { Console.WriteLine(a + b); // 输出:30 } }
### 总结代理、动作、函数和事件是四种重要的编程概念,它们使得我们能够以更灵活和高效的方式编写代码。通过使用这些概念,我们可以将方法作为参数传递给另一个方法,实现更复杂的逻辑。
### 参考资料* Microsoft .NET Framework4.8 Documentation: Delegates* Microsoft .NET Framework4.8 Documentation: Events