C#简单笔记09:委托,事件

本文深入探讨C#中的委托和事件,解释了委托如何作为方法的引用,并演示了其在函数指针概念上的改进。通过实例展示了委托的声明与使用,以及事件如何增强数据封装和保护。

委托

建议:有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#系列讲座*

两个讲座有重复部分,只当复习了.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值