c#中委托的作用

近期关于c#中委托的作用的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考 ,将是我们最大的荣幸 。

1.委托概述

委托是C#中新加入的一个类型,可以把它想作一个和Class类似的一种类型,和使用类相似 ,使用一个委托时,需要两个步骤,首先你要定义一个委托 ,就像是定义一个类一样;然后,你可以创建一个或多个该委托的实例。

定义一个委托的语法是这样的:

[public/protected/private] delegate returnType delegateName(paramtype param1,…)

这是我自己写的,看起来好像有点怪怪的 ,我来解释一下,private/protected/private是限定词,就不多说了 ,delegate是申明一个委托的关键词 ,returnType是一个返回类型,delegateName是一个你给委托起的名字,你可以写任何一个你喜欢的名字 ,paramtype param1…这个是参数列表。说了这么多可能看起来还是不是很好理解,我是这样认为的,实用点来讲 ,委托定义就是在一个函数定义中间加入一个delegate的关键词 。它的作用类似于你申明一个类:

public class ClassName {…}

创建一个委托的实例:

[public/protected/private] delegateName deleInstanceName = new delegateName(MethodName)

这个类似于实例化一个类,public ClassName instancename = new ClassName(…),这里有个要注意的地方 ,即MethodName方法要和delegateName的签名一致。什么是签名一致,就是说MethodName的参数列表,返回值要分别和returnType、(paramtype param1,…)一致。举个例子来说明下:

public delegate string DelegateDemo(string name, int age);

比如我们如上定义了一个委托 ,就写法来说,其实就是在函数 string DelegateDemo(string name, int age)前面加了一个delegate的关键字,下面我们来用创建一个函数:

public string AgentDemo(string name, int age)

{

string rev = “”;

return rev;

}

这个函数是做参数传递给一个DelegateDemo实例的 ,接下来创建一个DelegateDemo的实例:

DelegateName instanceDemo = new DelegateName(AgentDemo);

这时要说到一致了 ,即AgentDemo和声明委托时的DelegateDemo(我们姑且将delegate去掉)这两个函数的返回值,参数列表要相同 。终于说完了,不知道看的人明不明白。

接下来 ,我们可以使用这个委托了(调用一个委托),如下:

string name = “cshape ”;

int age = 20;

instanceDemo(name, age);

当instanceDemo执行时,会执行AgentDemo函数 ,instanceDemo相当于C里的一个函数指针,现在这个指针指向AgentDemo的函数入口地址。

2.多点委托

前面提到的委托都只包含对一个方法的调用,如果需要调用多个方法 ,需要多次显示的调用这个委托,我们还有另的选择,我们可以让一个委托中包含多个方法 ,这样我们一次显示调用委托,就可以按照顺序连续的调用多个方法 。看下面的例子:

public delegate void MultiDelegate(string name);

public void AgentDemo1(string str)

{

Console.WriteLine(str + “this is AgentDemo1\n”);

}

public void AgentDemo2(string s)

{

Console.WriteLine(s + “this is AgentDemo2\n”);

}

MultiDelegate multiDemo = new MultiDelegate(AgentDemo1);

multiDemo += new MultiDelegate(AgentDemo2);

multiDemo(“multiDemo test : ”);

输出的结果应该是:

multiDemo test :this is AgentDemo1

mutliDemo test :this is AgentDemo2

可以看到我们一次显示的调用一个委托,它顺序的(按照你添加方法的顺序)执行了方法AgentDemo1和AgentDemo2。这里要注意的有几点:

● 委托支持 += ,-=这样的运算符 ,对应为添加或去掉一个方法

● 多点委托不可以定义有返回值,因为无法处理多个方法的返回值,所以如果要使用多点委托 ,应该用void,否则你的编译会返回一个错误

● 多点委托不建议你的参数列表中有OUT的类型,这样只会out最后一个方法的值 ,其他的值会丢失。

3.委托的理解

首先申明,这只是我举的一个例子,目的是帮助理解委托的过程 ,其中很多地方都经不起推敲,望大家知悉 。言归正传,

你想要吃饭 ,

但是自己又不会做(委托方不知道实现细节),

你计划找个饭店,叫个回锅肉饭(定义了一个委托)

你决定找常去的那家叫做A的饭店(实例化一个委托)

你打电话给A饭店(委托调用)

A饭店给你做好了你的回锅肉饭(代理函数工作)

饭来了 ,真好 。

4.委托的使用时机

当你需要把一个方法传送给其他方法时 ,可以考虑使用委托。好像不是很好理解,也可以这样说,当你确定要处理一件事 ,但又不能确定处理方法时,可以考虑用委托。其实单独的说委托的应用好像有点牵强,委托更多的是在事件中的应用 。

关于c#中委托的作用的相关内容介绍到此告一段落 ,若这些信息对您有所启发,欢迎持续关注本站获取更多优质内容。

本文来自作者[削大瓦]投稿,不代表子金号立场,如若转载,请注明出处:https://zijgzki.cn/news/5755.html

(14)

文章推荐

  • 上海新增4例本土确诊(上海新增5本地确诊)

    文章目录:❶、11月19日上海新增病例居住地一览❷、12月4日上海新增社会面4+78月24日上海新增❸、10月14日上海新增4+38,中风险+14APP❹、上海新增4例确诊的行动轨迹如何?11月19日上海新增病例居住地一览❶、分别居住于:莲园路630弄,灵岩南路801弄,博

    2025年09月27日
    28301
  • 玩家必备攻略“微信里打麻将助赢神器”(其实真的能开挂)

    教程分享“同城搓麻将怎么开挂”分享用挂教程亲,同城搓麻将怎么开挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的通过添加客服微:本

    2025年12月16日
    6305
  • 辅助开挂工具“微乐广东麻将插件,果然有开挂教程! - 哔哩哔哩

    重大发现“手机打牌软件有没有挂”详细开挂玩法手机打牌软件有没有挂是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加入我们(QQ群聊)免费测试,先看效果下载使用。手机打牌可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义手机打牌

    2025年12月16日
    9306
  • 玩家必看攻略!手机上打麻将免安装控牌器(透视)”确实可以开挂

    重大发现“微乐广西麻将开挂应用”分享用挂教程亲,微乐广西麻将开挂应用这款游戏原来确实可以开挂,详细开挂教程有意向的用户,请加入上面Q_Q群.1、起手看牌2、随意选牌3、控制牌型4、注明,就是全场,公司软件防封号、防检测、 正版软

    2025年12月18日
    6305
  • 玩家必备攻略“手机小程序麻将控牌器”详细开挂玩法

    万能开挂辅助“hhpoker辅助器(透视)”确实可以开挂无需打开直接搜索微信:本司针对手游进行,选择我们的四大理由:1、软件助手是一款功能更加强大的软件!无需打开直接搜索微信:2、自动连接,用户只要开启软件,就会全程后台自动连接程序,无需用户时时盯着软件。

    2025年12月20日
    4303
  • 指定教程“手机麻将软件出售”(详细透视教程)

    辅助开挂工具“微信开心麻将挂免费下载安装评测”附开挂脚本详细步骤 您好,微信开心麻将挂免费下载安装评测这款游戏可以开挂的,通过复制添加上方qq群号码搜索添加入群,入群后还可以先与玩家讨论然后安装插件,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是

    2025年12月21日
    5310
  • 教程分享“手机小程序麻将控牌器,附图文教程!

    必备绝技“网易棋牌亲友房可以开挂吗”详细开挂教程亲,网易棋牌亲友房可以开挂吗这款游戏原来确实可以开挂,详细开挂教程有意向的用户,请加入上面Q_Q群.1、起手看牌2、随意选牌3、控制牌型4、注明,就是全场,公司软件防封号、防检测、 

    2025年12月22日
    2305
  • 辅助开挂工具“微信小程序扑克记牌器”开挂(透视)辅助教程

    实操教程“情怀河北麻将游戏开挂神器下载!分享用挂教程 您好,情怀河北麻将游戏开挂神器下载这款游戏可以开挂的,通过复制添加上方qq群号码搜索添加入群,入群后还可以先与玩家讨论然后安装插件,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像

    2025年12月28日
    1318
  • 玩家必备教程‘微信小程序扑克牌辅助器”附开挂脚本详细步骤

    必看教程“微乐湖南麻将开挂下载最新版”详细开挂玩法>>您好:微乐湖南麻将开挂下载最新版,软件加微信【】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是

    2025年12月28日
    2320
  • 必备绝技“微信小程序跑得快记牌器”分享装挂技巧步骤

    辅助开挂工具“微乐甘肃麻将开挂教程”附开挂脚本详细步骤 您好,微乐甘肃麻将开挂教程这款游戏可以开挂的,通过复制添加上方qq群号码搜索添加入群,入群后还可以先与玩家讨论然后安装插件,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到

    2025年12月29日
    2308

发表回复

本站作者才能评论

评论列表(3条)

  • 削大瓦的头像
    削大瓦 2025年12月29日

    我是子金号的签约作者“削大瓦”

  • 削大瓦
    削大瓦 2025年12月29日

    本文概览:近期关于c#中委托的作用的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。1.委托概述委托是C#中...

  • 削大瓦
    用户122904 2025年12月29日

    文章不错《c#中委托的作用》内容很有帮助

联系我们

邮件:子金号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

子金号