文档
-
了解如何使用委托。 委托是一种面向对象的类型安全的安全类型,可安全地封装方法。
-
了解如何声明、实例化和使用委托。 参阅涉及 C# 1.0、2.0 和 3.0 及更高版本的示例。
-
了解如何合并委托以创建多播委托。 查看代码示例和其他可用资源。
委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托实例调用方法。
委托用于将方法作为参数传递给其他方法。 事件处理程序就是通过委托调用的方法。 你可以创建一个自定义方法,当发生特定事件时,某个类(如 Windows 控件)就可以调用你的方法。 下面的示例演示了一个委托声明:
public delegate int PerformCalculation(int x, int y);
可将任何可访问类或结构中与委托类型匹配的任何方法分配给委托。 该方法可以是静态方法,也可以是实例方法。 此灵活性意味着你可以通过编程方式来更改方法调用,还可以向现有类中插入新代码。
备注
在方法重载的上下文中,方法的签名不包括返回值。 但在委托的上下文中,签名包括返回值。 换句话说,方法和委托必须具有相同的返回类型。
将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。 可编写一个比较应用程序中两个对象的方法。 该方法可用在排序算法的委托中。 由于比较代码与库分离,因此排序方法可能更常见。
对于类似的方案,已将函数指针添加到 C# 9,其中你需要对调用约定有更多的控制。 使用添加到委托类型的虚方法调用与委托关联的代码。 使用函数指针,可以指定不同的约定。
委托具有以下属性:
文档
了解如何使用委托。 委托是一种面向对象的类型安全的安全类型,可安全地封装方法。
了解如何声明、实例化和使用委托。 参阅涉及 C# 1.0、2.0 和 3.0 及更高版本的示例。
了解如何合并委托以创建多播委托。 查看代码示例和其他可用资源。
培训
模块
了解如何为需要动态调用方法的场景声明、实例化和调用委托,例如回调方法和自定义排序或筛选。 了解如何使用委托创建灵活且可扩展的代码,这些代码可以适应不断变化的要求。