委托

建议:有C基础的,不妨把委托当做函数指针
委托-菜鸟教程https://www.runoob.com/csharp/csharp-delegate.html
C#教程-委托(微软文档)https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/delegates
C#指南-编程指南-委托(微软文档)https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/delegates/
C#指南-C#概念-委托和事件(微软文档)https://docs.microsoft.com/zh-cn/dotnet/csharp/delegates-overview
委托类型表示对具有特定参数列表和返回类型的方法的引用。 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。 委托类似于其他一些语言中的函数指针概念,但与函数指针不同的是,委托不仅面向对象,还类型安全。
下面的示例声明并使用 Function 委托类型。
using System;
delegate double Function(double x);
class Multiplier
{
double factor;
public Multiplier(double factor)
{
this.factor = factor;
}
public double Multiply(double x)
{
return x * factor;
}
}
class DelegateExample
{
static double Square(double x)
{
return x * x;
}
static double[] Apply(double[] a, Function f)
{
double[] result = new double[a.Length];
for (int i = 0; i < a.Length; i++) result[i] = f(a[i]);
return result;
}
static void Main()
{
double[] a = {0.0, 0.5, 1.0};
double[] squares = Apply(a, Square);
double[] sines = Apply(a, Math.Sin);
Multiplier m = new Multiplier(2.0);
double[] doubles = Apply(a, m.Multiply);
}
}
以上示例来自微软文档https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/delegates
以下通过委托回调方法


以下使用+绑定新委托

以下使用-号解绑委托

事件

事件-菜鸟教程https://www.runoob.com/csharp/csharp-event.html
通过事件使用委托
- 更好的封装保护数据
- event禁止委托直接赋值,防止原有委托被直接替换掉。必须使用+=,-=来绑定或解除绑定
- event禁止在类外部直接调用委托,使其只能在类内部调用委托。


*发现本讲座C#部分不全,故下一章将学习黑马C#系列讲座*
两个讲座有重复部分,只当复习了.....
本文深入探讨C#中的委托和事件,解释了委托如何作为方法的引用,并演示了其在函数指针概念上的改进。通过实例展示了委托的声明与使用,以及事件如何增强数据封装和保护。
2080

被折叠的 条评论
为什么被折叠?



