C#中委托的基础入门与实现方法
C#中委托的基础入门与实现方法,博智网带你了解详细信息 。
目录
- 前言
- 关于委托
- 委托的实现
- 一、基本实现方式
- 二、使用委托时的一些特殊方式
- 1、委托实例对象的创建多元化:
- 2、事件绑定的多种方式
- 三、委托的几种特殊实现方式
- 1,使用Action方法
- 2,使用Func方法
- 四、委托的一些特殊小知识
- 1、委托闭包的产生
- 2,关于事件
- 总结
前言似乎委托对于C#而言是一种高级属性,但是我依旧希望你就算第一次看我的文章,也能有很大的收获 。
所以本博客的语言描述尽量简单易懂,知识点也是面向初入门对于委托不了解的学习者的 。当然如果有幸有大佬发现文章的错误点,也欢迎留言指出!
关于委托关于委托的介绍主要来源于C#文档:委托概述(本文章优势在于去掉一些不必要的细节,对于初学者而言简单高效)
委托的定义主要是下面几个方面:
- 委托是一种引用类型:表示对具有特定参数列表和返回类型的方法的引用
- 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联 。你可以通过委托实例调用方法
关于委托的一些特点是(暂时不了解没有关系):
- 委托类似于 C++ 函数指针,但委托完全面向对象,不像 C++ 指针会记住函数,委托会同时封装对象实例和方法 。
- 委托允许将方法作为参数进行传递 。
- 委托可用于定义回调方法 。
- 委托可以链接在一起;例如,可以对一个事件调用多个方法 。
- 方法不必与委托类型完全匹配 。有关详细信息,请参阅使用委托中的变体 。
- 使用Lambda 表达式可以更简练地编写内联代码块 。Lambda表达式(在某些上下文中)可编译为委托类型 。若要详细了解lambda 表达式,请参阅 lambda 表达式 。
委托的实现
一、基本实现方式前面也说,委托是一个引用类型,要使用委托,肯定就需要对其进行定义并创建一个委托对象,下面使用一个带有一个参数的案例来理解委托
public class DemoDelegate{//T1:delegate void TestDel(string s);TestDel Del;//T4:static void Main(string[] args){DemoDelegate demo = new DemoDelegate();demo.CreateDelObject();demo.Del?.Invoke("你们好");}//T3:public void CreateDelObject(){Del += TestEventOne;Del += TestEventTwo;}//T2:public void TestEventOne(string str){Console.WriteLine(str);}public void TestEventTwo(string str){Console.WriteLine(str);}}
如果你是刚刚接触委托这个概念,可能对于这些代码的含义不是特别了解,没关系,你可以根据注释的顺序来看代码并理解委托的实现机制:
- T1:通过delegate关键字定义一个委托类型TestDel,并创建一个实例Del
- T2: 也很好理解,创建两个测试方法,可以执行输出
- T3: 是委托的关键,为刚刚创建的委托来添加事件方法
- T4: 执行委托实例Del,可以简单理解为执行该实例绑定的所有事件方法
demo.Del?.Invoke("你们好");中Invoke()为执行该委托对象内方法的API,?则可以在Del委托对象为空时,系统不报错关于?的具体含义,可查阅:其实委托主要是有这简单的四步来实现了,通过这个案例,更加明显的体现出委托将一系列方法作为参数来让其他方法去调用的特点 。
可为空引用类型
二、使用委托时的一些特殊方式通过上面的案例,可以看出对于委托的实现是很简单的,但是C#还是为我们提供了很多更加间接或者集成的用法,具体有:
1、委托实例对象的创建多元化:创建委托类型的多种方式:
推荐阅读
- 河蚌体内珍珠的形成过程是
- 12mis含义是什么
- 12w灯泡一小时耗电量
- 10h是什么意思
- 猫屎咖啡是真的猫屎吗
- 牛肉是属于发的东西吗
- 辣椒酱的制作方法及配料
- 监控不显示画面怎么办
- 13妖什么牌
- 苹果x手机电池容量是多少
