关于C#中的委托的部分总结

本文深入浅出地介绍了委托的基本概念及其在程序设计中的作用。通过一个具体的C#示例,展示了如何定义、实例化委托,并将其用于方法的传递,以此避免使用复杂的条件判断语句,提高代码的可维护性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要理解委托是什么?(这里单独讨论委托本身,并不牵扯事件。当然可以把事件当做一种特殊类型的委托,以后会详细总结)

1,:从数据结构上来讲,委托是用户自定义的一种数据类型,只不过这种数据类型代表一类方法;

2:从设计模式上来讲,委托(类) 是对方法(对象)的抽象;

委托想实现的功能就是将方法作为另一个方法的参数进行传递;

委托既然是一个类,一种数据类型,那么它存储的是什么类型的数据(我们就可以像对待普通的数据类型那样对待它)?

委托的返回值和参数类型要和你将要传入的方法的返回值和参数类型一致;

看一个例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2delegateOnly
{
    //定义委托
    public delegate void FunPeople(string name);
    class Program
    {
        static void Main(string[] args)
        {
            //委托变量初始化(实例化委托)
            FunPeople fun = new FunPeople(Program.Fun);
            //调用委托
            fun("小李哥");
            Console.ReadKey();
        }
        /// <summary>
        /// 想要传递的方法,与声明的委托具有相同的返回值类型和参数类型
        /// </summary>
        /// <param name="name"></param>
        static void Fun(string name)
        {
            Console.WriteLine("{0}很开心!",  name);
        }
             
    }
}

在这个例子中主要实现以下功能:

声明委托类型

其中

FunPeople fun = new FunPeople(Program.Fun);

完成以下三步:

数据声明(委托类型变量声明)

数据初始化(委托类型变量初始化)

数据赋值 (委托类型变量赋值)


数据运算(委托变量的增加或者减少(一个委托绑定多种方法));

委托调用:委托调用时所有绑定的方法都要被调用。

输出结果:

我们知道,委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

委托可以看做是表示一类方法的类,可以将方法当做另一个方法的参数进行传递,这种将方法动态的赋值给参数的方式,避免了大量使用if-else语句。

在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。

参照https://www.cnblogs.com/liuhaorain/p/3911845.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐细雨如春风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值