C#委托详解,我们经常听说委托,但是,它是什么?我们为什么需要它?如何使用它?
什么是委托?
委托它称为指向函数的指针。委托用于将方法作为参数传递给其他方法。它是一种类型,表示对具有特定参数列表和返回类型的方法的引用。实例化委托时,可以将其实例与具有兼容签名和返回类型的任何方法相关联。您可以通过委托实例调用该方法。事件处理程序是通过委托调用的方法。您可以创建自定义方法,并且当某个事件发生时,类(如Windows控件)可以调用您的方法。
为什么我们需要委托?
- 委托允许将方法作为参数传递。
- 它可用于定义回调方法。
- 可以对单个事件调用多个方法。
- 方法不必与委托类型完全匹配。
如何使用它?
让我们试着用一个例子来理解:
在上面的例子中,我使用了一个LongRunningClass,它让LongRunningFunction执行一些长时间运行的任务。现在另一个类成员函数正在请求LongRunningFunction 开始操作并传递信息。为了实现这一点,我们首先要在LongRunningClass 中定义一个委托,并通过将方法作为参数传递来请求从另一个类传递信息。
委托的类型
- 单一委托
- 多播委托
- 通用委托
- Func 委托
- Action委托
- Predicate 委托
单一委托
它用于调用单个方法。
多播委托
它用于调用多个方法。
注意事项:
- 所有方法都将按照添加的顺序被调用。
- 如果委托的返回类型不是 void,则将返回最后调用方法的返回值。
- 如果委托有一个 out 参数,则 out 参数的值将是最后调用的方法分配的值。
创建多播委托的另一种方法
通用委托
它是在 .Net 3.5 中引入的,因此我们不需要定义委托实例来调用方法
- Func委托
- Action委托
- Predicate 委托
Func委托
- 它是在 System 命名空间中定义的通用委托。
- Func 委托必须返回一个值。
- Func 委托可以有 0 到 16 个输入参数。
- Func 委托不允许使用 ref 和 out 参数。
- Func 委托的结果必须有 1 个输出参数。
Action委托
- Action委托与 Func 委托类型相同,只是它不返回任何内容。
- Action委托不返回任何值。
- Action委托可以有 0 到 16 个输入参数。
- Action委托不允许使用 ref 和 out 参数。
- 它可以与匿名方法和 Lambda 表达式一起使用。
Predicate 委托
- Predicate 与 Func 和 Action 委托类型相同,只是它必须接受一个输入参数并返回布尔类型。
- Predicate 委托采用一个输入参数和布尔返回类型。
- 匿名方法和 Lambda 表达式可以分配给 Predicate 委托
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!