亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C# 匿名方法:简化委托使用的实用技巧

匿名方法简介

我们之前讨论过,委托用于引用与委托具有相同签名的任何方法。换句话说,你可以使用委托对象调用可被委托引用的方法。

匿名方法提供了一种将代码块作为委托参数传递的技术。匿名方法没有名称,只有方法体。

在匿名方法中无需指定返回类型;它从方法体内的 return 语句推断得出。

编写匿名方法

匿名方法在创建委托实例时使用 delegate 关键字声明。例如:

delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x) {
    Console.WriteLine("Anonymous Method: {0}", x);
};

代码块 Console.WriteLine("Anonymous Method: {0}", x); 就是匿名方法的方法体。

委托既可以用匿名方法调用,也可以用命名方法调用,方式相同,即向委托对象传递方法参数。例如:

nc(10);

完整示例

以下示例演示了该概念:

在线演示
using System;
delegate void NumberChanger(int n);
namespace DelegateAppl {
    class TestDelegate {
        static int num = 10;
        public static void AddNum(int p) {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static void MultNum(int q) {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum() {
            return num;
        }
        static void Main(string[] args) {
            // 使用匿名方法创建委托实例
            NumberChanger nc = delegate(int x) {
                Console.WriteLine("Anonymous Method: {0}", x);
            };
            // 使用匿名方法调用委托
            nc(10);
            // 使用命名方法实例化委托
            nc = new NumberChanger(AddNum);
            // 使用命名方法调用委托
            nc(5);
            // 使用另一个命名方法实例化委托
            nc = new NumberChanger(MultNum);
            // 使用命名方法调用委托
            nc(2);
            Console.ReadKey();
        }
    }
}

编译执行上述代码,输出结果如下:

Anonymous Method: 10
Named Method: 15
Named Method: 30

C语言

  1. 精密加工:实现工件精度的核心方法论
  2. 局部电镀四大成熟工艺技术详解
  3. EPA 21号方法:泄漏检测与修复(LDAR)合规全攻略
  4. 掌握 C# 抽象类与抽象方法:实战指南
  5. 理解 C# 分部类与分部方法
  6. 掌握 C# sealed 类与方法:用法、示例与代码安全性能提升
  7. 掌握 C# 方法重载:核心概念、实战示例与最佳实践
  8. C# 方法完全指南:定义、调用、递归与参数传递
  9. 深入理解 C# 委托:函数引用与事件的完整指南
  10. Python Lambda匿名函数实战指南
  11. 精通 Java 匿名内部类:定义、语法与实战示例
  12. Java 8 默认方法:接口演进与向后兼容的关键机制