委托深入学习

C#委托的学习 注:我的学习笔记,之前在蛮牛网发表的。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharp_委托的学习 { class Program { ////1 阅读详情

有两个问题:1. 用什么方法或工具来重新MulticasetDelegate???

                  2. 委托的协变和抗变表现的是多态特性吗??它的主要应用是什么呢??

委托:运行时动态的指定执行某代码块。

delegate void RunDelegate(int x);
定义了一个委托,此委托的每个实例包含方法的细节:返回值为空,参数为int型。
假定一个委托TurnDelegate,该委托代表的方法有两个long型参数,返回类型为double。
deleget double TurnDelegate(long direction,long speed);
理解委托:定义委托就是定义一个类,委托就是方法的一个参数签名和返回类型指定。
委托实现为派生自基类System.MulticastDelegate-->System.Delegate。在mscorlib.dll-->System-->Delegate-->MulticastDelegate。
public delegate string TestDelegate();
static void Main(string[] args)
{
     int a = 100;//定义一个int类型的变量
     TestDelegate test = new TestDelegate(a.ToString);//将int的ToString方法包含在TestDelegate中
     Console.WriteLine("String is {0}", test.Invoke());//调用委托方法 test.Invoke(); test();
     Console.ReadLine();
}

多播委托
我的理解就是为委托类指定了多个代码块,委托类像指针那样指向代码块,按照指定的顺序进行代码块的执行。
如:DemoDelegate demo = Function1;
    demo += Function2;
    demo += Function3;

    class Program
    {
        delegate void DemoDelegate();
        static void Main(string[] args)
        {
            DemoDelegate demo = Test.Function1;
            demo += Test.Function2;
            demo += Test.Function3;

            demo();
            Console.ReadLine();
        }
    }

    public class Test
    {
        public static void Function1()
        {
            Console.WriteLine("Function 1 ");
        }
        public static void Function2()
        {
            Console.WriteLine("Function 2 ");
        }
        public static void Function3()
        {
            Console.WriteLine("Function 3 ");
        }
    }

但是如果中间的代码块发生异常,则下面的代码块将不继续执行了。
实际上委托中包含一个委托类型的集合Delegate[],通过GetInvocationList获得。
如demo.GetInvocationList();
  通过for{ try{...} catch{...} }来进行循环调用。

匿名委托 匿名委托之 Lambda(λ)表达式
    delegate string DemoDelegate(string name,int age);
        static void Main(string[] args)
        {
            //匿名委托
            DemoDelegate demo = delegate(string name,int age)
            {
                TestDelegate(100, 5);
                return "Hello " + name + "," + age + " ,Welcome To Dead House!";
            };
            Console.WriteLine(demo("Jeffres",100));

            //匿名委托之 Lambda(λ)表达式
            DemoDelegate demolambda = (name,age)=>
            {
                return "你好 " + name + "," + age + " ,欢迎你!";
            };
            Console.WriteLine(demolambda("Beyond",50));
 
            Console.ReadLine();
        }
        public static void TestDelegate(int x,int y)
        {
            Console.WriteLine(x + y);
        }

返回类型协变:方法的返回类型可以派生于委托定义的类型。
public class ReturnUp
{}
public class ReturnDown:ReturnUp
{}
public delegate ReturnUp DemoDelegate();
class Program
{
    static void Main()
    {
        DemoDelegate demo = Method;
        demo();
    }
    static ReturnDown Method()
    {
        ReturnDown down = new ReturnDown();
        return down;
    }
}

参数类型抗变:委托定义的参数可能不同于委托调用的方法。
public class ParamUp
{}
public class ParamDown:ParamUp
{}
public delegate void DemoDelegate(ParamDown param);
class Program
{
    static void Main()
    {
    DemoDelegate demo = Method;
    ParamDown p = new ParamDown();
    demo(p);
    }
    static void Method(ParamUp p)
    {
    
    }
}


c# 委托 关键字:Delegate 学习笔记 生活中是不是经常需要拜托别人帮忙做一件事情? 比如:工作中,客户反馈系统有一个bug,但是你手头上还有很多工作没做完,就需要拜托有时间的同事帮忙解决一下 这就是委托了 定义委托(就是我现在有一个改bug的工作要处理)——声明一个和委托类型一模一样的方法(拜托同事帮忙改bug)—— 执行委托(同事接受我的委托,开始处理bug)注意:委托类型和方法类型必须是一样的,因为要处理同样类型的事情,否... 阅读详情

相关推荐

【C#学习笔记】委托的应用

目录1. 委托概述2. 微软官方代码学习 1. 委托概述 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托实例调用方法。 2. 微软官方代码学习 一个控制台程序,运行结果是:打印出所有平装书的书名,并计算出所有平装书书价的平均值。 // A set of classes for handling a bookstore: namespace Bookstore { using Syst

汽车电子软件领域知识分享 474

学习C#委托与事件

学习参考资料:  MSDN:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconprovidingeventfunctionality.htm CodeProject: http://www.codeproject.com/csharp/events.asp    几天来参照MSDN上的委托事件的例子,自已写了一个关于委...

weixin_34087503的博客 134

人工智能(AI)简史:推动新时代的科技力量

人工智能(AI,Artificial Intelligence)是计算机科学的一个分支,旨在研究和开发可以模拟、扩展或增强人类智能的系统。它涉及多种技术和方法,包括机器学习、深度学习、自然语言处理(NLP)、计算机视觉、专家系统等。

qq_17153885的博客 1万+

委托实现方法学习总结

委托实现方法学习总结 (1) 委托声明(定义一个函数原型:返回值+参数类型和个数) 注:在类的外部声明——中介(房产中介商) (2) 根据委托定义“具体”的方法——————房源 注:在同一类中定义方法 (3) 创建委托对象,关联“具体方法”后实例化———中介商拥有房源 注意:在主函数中操作...

weixin_34304013的博客 146

stm32f103c8t6的中文字库

stm32的成熟中文字库,上手即用,操作简单

nbbskk的博客 3653

PHP+txt文件存储简易留言板

留言板共三个文件: index.php---展示留言内容和收集表单 write.php---向txt文件写入数据 message.txt---存储留言数据 index.php用于展示留言内容、通过表单把用户输入的数据POST给write.php,write.php把内容写入message.txt。 index.php代码: <?php //设置时区 date_defau...

仿站、源码搭建/迁移技术博客 1031

日记-线程、委托学习

                好久没有写日记了,以前都是记下年记得,呵呵…………        前段时间项目忙完了,现在有些时间自己学习,提高下技术,补充能量,在下次的项目中就可以应用新学的技术来改善系统的效率、可读性、等等。今天学习了线程和委托        感觉线程还是很有用处的,随着接下来几天的学习,我会把学习的收获记录下来,看着自己一步步的成长是一件很有意思的一件事情。 

hhwangc的专栏 388

使用Simulink进行四足机器人的非线性动力学建模与仿真

四足机器人的运动包含多个自由度(DOF),包括腿部的摆动和支撑阶段的动力学特性。由于存在接触力、摩擦以及不同地形的影响,四足机器人的动力学行为呈现出高度的非线性特征。因此,构建准确的非线性动力学模型对于研究机器人的运动学和动力学特性至关重要。定义代表机器人状态的变量,如位置、速度、角度和角速度。matlab深色版本通过本指南,我们介绍了如何基于Simulink搭建一个四足机器人的非线性动力学模型,并进行了详细分析。

xiaoheshang_123的博客 311

UE C++学习笔记:委托的使用

UE C++中委托的使用

oO花花Oo的博客 805

ESP32-IDF开发实例-外部Flash与FatFs文件系统数据存取

FatFs是用于小型嵌入式系统的通用FAT / exFAT文件系统模块。FatFs模块是按照ANSI C(C89)编写的,并且与磁盘I/O层完全分开。因此,它独立于平台。它可以并入资源有限的小型微控制器中,例如8051,PIC,AVR,ARM,Z80,RX等。ESP32-IDF对FatFs提供了良好的支持。

视觉与物联智能 2917

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

为了兼容这部分手机,车机端在向手机端发送USB控制命令字的同时,需要启动mDNS Server,广播车机端IP地址和HiCar SDK侦听的Server Socket端口(IP地址和端口在HiCar SDK初始化USB driver时,告知车机),在检测到手机断开USB连接时关闭mDNS Server。厂商在集成HiCar SDK开发HMI应用时,不可避免会使用到智能座舱的敏感权限,例如位置权限、摄像头权限、麦克风权限等,SDK初始化时,厂商HMI应用需要设置必要的车机参数供SDK使用。

码农17年的博客 1075

C#委托 学习笔记

文章目录前言一、委托是什么?二、委托的使用1.回调静态方法2.回调实例方法3.委托链三、委托的实现原理四、语法糖 前言 方便以后的复习,在初步学习完C#委托后写的博客。 思维导图: 一、委托是什么? 委托是C#提供的回调函数机制,它是类型安全的。 回调机制类似于一种我们的生活场景: 某人拥有一张其他人的名片,当有需要的时候,可以打这张名片上的电话,名片的拥有者则会做出反应。 监听者模式也是由回调机制实现的 类似于c语言中的函数指针 可以当作参数传递于其他的方法中 二、委托的使用 下面的代码,演示了部

云观的博客 652

SystemUI-下拉去掉后去掉用户切换-去掉电源按键中的紧急呼叫

这里自己倒腾完成了两个常见需求:去除用户切换、去除紧急呼叫UI在去除用户切换时候,用到了Compose知识点,所以很难按照以前经验去找对应布局、找对应的View Item ,以往方法都只能部分借鉴的搞系统的还是要跟着谷歌学一点Compose技能了,方便日常开发调试。

十年饮冰,难凉热血 1459

C 委托和事件学习资源

C# 委托和事件学习资源 去发现同类优质开源项目:https://gitcode.com/ 本文档是一份关于C#语言中委托(Delegate)和事件(Event)机制的详细讲解集合。我们精选了一系列优质文章,旨在帮助您深入理解委托和事件的概念、原理及实际应用方法。 内容概览: C# 委托妙文:介绍委托的基本概念,以及委托在C#编程中的灵活运用。 C# 委托和事件:详细讲解委托与事件的联系与区别,...

gitblog_06763的博客 437

Qt图形几何之QRect详解:从基础操作到高级功能全解析

本文全面介绍了Qt框架中的QRect类,详细解析了其核心功能和使用方法。主要内容包括:1)QRect的基本概念与多种构造函数;2)矩形属性获取和状态判断方法;3)几何操作函数(移动、调整大小等);4)几何关系判断(包含、相交等);5)坐标变换和边距处理;6)实用功能与QRectF转换;7)综合应用示例(图形界面、碰撞检测、布局管理);8)性能优化建议和常见陷阱。通过丰富的代码示例,展示了QRect在Qt图形编程中的实际应用,帮助开发者掌握矩形处理的各项操作技巧,提升图形界面开发效率。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 117

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C#委托与事件的学习资料记录

项目原因,需利用C#进行项目后台开发,但是在学习中被事件和委托绕晕了。现记录下学习过程中,参考学习的文章。 利用一个简单粗暴的小故事形式,初步理解委托与事件:https://www.cnblogs.com/yinqixin/p/5056307.html#!comments 张子阳对于委托事件的详细讲解: http://www.tracefact.net/tech/009.html http://www.tracefact.net/tech/029.html ...

ZhuLT23的博客 246

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C#零基础学习之委托

C#零基础学习之路——委托 一. 学习背景 基于学习b站刘老师的c#入门,整理学习心得。 二. 委托 2.1 什么是委托 委托的简要理解:委托其实就是c/c++中的函数指针,只是在c#中换了一种表现形式。 2.2 简单的委托 下面我们使用c#自带的委托,Action和Func委托,老样子,打开编译器,键入代码,代码1: using System; namespace DelegateExample { class Program { static void Main(str

wangyuyu0000的博客 279

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

委托学习

委托:如果我们要把方法当做参数来传递的话,就要用到委托。简单来说 委托 是一个类型,这个类型可以赋值一个方法的引用。 对于委托类型可以赋值一个方法的引用 ,可以把一个方法赋值过来,通过这个委托变量调用这个方法 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字段和方法组成的,然后使用这个类实例化对象。在我们使用委托的时候,也需要经过这两个阶段,首先定义委托,告诉编译...

qq_42725795的博客 143

C# 学习委托

目录 目录 一、什么是委托 二、委托的声明 三、委托的实例化 四、委托的用途 五、委托的多播 6 委托实现事件实例 一、什么是委托 其实在做项目的过程中,应该也多多少少用过委托,但是当想清楚而流利地口述出委托到底是什么的时候,却又犯结巴,总觉得表达不到位。今天看了几篇博文和书本内容,干脆写成博客来帮助自己理解和记忆下委托。 言归正传,什么是委托? 委托是一种引用类型,...

u014677855的博客 2853

C#入门学习笔记 #8(委托)

本文分享了C#委托的学习笔记,主要介绍了委托的基本概念和使用方法。委托是C#中函数指针的升级版,可以将方法作为参数传递。笔记详细讲解了Action和Func委托的使用,以及如何自定义委托类型。通过模板方法和回调方法的示例,展示了委托在实际编程中的应用场景。此外,还比较了单播委托和多播委托的区别,并通过学生做作业的案例演示了多播委托的用法。文章强调要合理使用委托,避免滥用带来的问题。这些笔记将持续更新,希望能帮助读者更好地理解和使用C#中的委托机制。

m0_73612206的博客 673

C#事件委托学习(一)

前段时间学习了事件委托,由于学习的还不够深入过了几天不用后,感觉又忘了。所以今天抽空将自己写的例子简单的记录下,方便后期使用。 1. 声明事件和委托 public delegate void InRoomOptionDelegate(string content, DateTime dataTime); public event InRoomOptionDele

694

学习虚幻C++开发日志——委托

委托

2301_80888963的博客 2684

7.21 C#学习笔记(委托)

本文介绍了C#中委托(delegate)的概念与使用方式。委托是一种存储函数引用的类型,要求与目标方法具有相同的返回值类型和参数列表。文章详细说明了委托的定义语法(使用delegate关键字)和两种使用方法(通过构造函数赋值或直接赋值),并强调了赋值时不能使用括号。文中还演示了无参/有参、无返回值/有返回值等不同类型委托的声明和使用方法,以及委托数组和将委托作为参数传递的示例。关键限制在于委托必须与目标方法的签名完全匹配,否则会导致编译错误。

weixin_72710348的博客 299

C#委托学习

一、什么是委托 什么是委托 Delegate 委托实例 Action 与 Func Action 和 Func 是 C# 内置的委托实例,它们都有很多重载以方便使用。 class Program { static void Main(string[] args) { var calculator = new Calculator(); // Action 用于无形参无返回值的方法。 Action action = new Action(calc

bojin4564的博客 365

C# 委托学习

示例1插件编程 根据对委托的理解,委托可以把一个方法当作参数进行传递,利用这个特性我们可以使用委托,实现插件编程。 public delegate int Transformer(int x); class Util{ pubilc static void Transform(int[] values, Transformer t){ for(int i = 0; ...

从良流氓*十三 271
上一篇: 暴风一号 病毒 源码学习
下一篇: Microsoft SQL Server系统有四种系统数据库
andycode
博客等级 码龄17年 12粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值