C#委托

· 浏览次数 : 0

小编点评

**C# 委托委托是什么?** 委托是一种指向方法的引用。它允许您将方法存储在变量中,并像调用普通方法一样调用它们。委托通常用于事件处理 和异步编程。 **基本语法定义委托类型。** ```csharp public delegate <返回值类型> 委托名(&<参数类型列表>); ``` * **public**: 表示委托是公开的。 * **<返回值类型>**: 表示委托返回的类型。 * **委托名**: 表示委托的名称。 * **(&<参数类型列表>)**: 表示委托的参数类型列表。 **创建委托实例** ```csharp private delegate string MyDelegate(string str); MyDelegate myDelegate = MyMethod; ``` * **MyMethod**: 表示要执行的方法的名称。 * **myDelegate**: 变量名称,存储委托。 **调用委托** ```csharp myDelegate("Hello World!\") ``` **委托链** ```csharp MyDelegate myDelegate = MyMethod; myDelegate += MyMethod2; //委托链(多播),先调用 MyMethod,在调用 MyMethod2委托的常见用法事件处理:事件通常使用委托来表示。当事件发生时,委托将调用所有已注册的事件处理程序。 ``` **使用委托** * **事件处理程序**: 使用委托来处理事件。 * **异步方法**: 使用委托来表示回调方法。 * **数据转换**: 使用委托来将一种类型的数据转换为另一种类型。

正文

C# 委托

委托是什么?

** 委托定义一种类型,该类型封装一个或多个方法(一个或多个方法指向委托实例)。**
委托是一种指向方法的引用。它允许您将方法存储在变量中,并像调用普通方法一样调用它们。委托通常用于事件处理 和异步编程。

基本语法

  1. 定义委托类型。
    public delegate <返回值类型> 委托名(<参数类型列表>);
  private  delegate string MyDelegate(string str);
  1. 创建委托实例(变量)。
    <委托类型> 委托变量名;
  MyDelegate myDelegate = MyMethod;
  1. 调用实例,执行方法。委托变量名(参数1, 参数2, ...);
myDelegate("Hello World!")
  1. 委托链(多播委托) 。调用实例后会执行多个方法。
MyDelegate myDelegate = MyMethod;
myDelegate += MyMethod2; //委托链(多播),先调用 MyMethod,在调用 MyMethod2

委托的常见用法

事件处理:事件通常使用委托来表示。当事件发生时,委托将调用所有已注册的事件处理程序。

异步编程:异步方法通常使用委托来表示回调方法。当异步操作完成时,回调方法将被调用。

数据转换:委托可用于将一种类型的数据转换为另一种类型。

总结

委托是 C# 中一项强大的功能,可用于提高代码的可重用性、可读性和灵活性。您应该在代码中尽可能使用委托。

引用

  1. 博文示例代码 https://github.com/chi8708/DotNetNote/blob/master/Note.Basic/04Delegate.cs

  2. 参考文献

与C#委托相似的内容:

C#委托

目录C# 委托委托是什么?基本语法委托的常见用法总结引用 C# 委托 委托是什么? ** 委托定义一种类型,该类型封装一个或多个方法(一个或多个方法指向委托实例)。** 委托是一种指向方法的引用。它允许您将方法存储在变量中,并像调用普通方法一样调用它们。委托通常用于事件处理 和异步编程。 基本语法

C# - 能否让 SortedSet.RemoveWhere 内传入的委托异步执行

若想充分利用 `RemoveWhere` 带来的性能优势,建议传入判断是否删除元素的委托内采取同步操作。若一定要在该委托内使用异步操作,可以采用本文中绕行的方法,但摈弃了 `RemoveWhere` 所带来的性能优势。

C#泛型

目录C#泛型概述什么是泛型?泛型有什么用?基本语法1.泛型方法 Method2.泛型类 class GenericClass{}3.泛型接口 public interface GenericInterface{}4.泛型委托 public delegate void Generic

C#事件

C#事件 概述 定义 类或对象可以通过事件向其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发布者”,接收(或处理)事件的类称为“订阅者”。 事件是一种特殊的多播委托,是委托实例变量, 事件只能在类的内部定义,只能从声明它的类中进行调用。 外部只能订阅和取消订阅事件。 事件的组成部分

Lakehouse 还是 Warehouse?(1/2)

Onehouse 创始人/首席执行官 Vinoth Chandar 于 2022 年 3 月在奥斯汀数据委员会发表了这一重要演讲。奥斯汀数据委员会是“世界上最大的独立全栈数据会议”,这是一个由社区驱动的活动,包括数据科学、数据工程、分析、机器学习 (ML)、人工智能 (AI) 等。 Vinoth C

C语言的简单学习

C语言是编译型语言,先编译再运行,通常用gcc进行编译,于是安装了Ubuntu操作系统。至于编辑器,VS Code也能用,先sudo apt install build-essential gdb,再在VS Code安装C/C++ extension,就可以进行开发了。 C语言程序都是 .c文件结尾

C#数据结构与算法入门教程,值得收藏学习!

前言 最近看到DotNetGuide技术社区交流群有不少小伙伴提问:想要系统化的学习数据结构和算法,不知道该怎么入门,有无好的教程推荐的?,今天大姚给大家推荐2个开源、免费的C#数据结构与算法入门教程,值得收藏学习! 数据结构与算法的作用 数据结构与算法在计算机科学中具有不可替代的地位和作用。通过学

GGTalk 开源即时通讯系统源码剖析之:聊天消息防错漏机制

GGTalk 内部实现了多种机制以确保消息的可靠性(不会错漏消息和重复消息),那么这些机制具体是怎么实现的了?

C#的多线程UI窗体控件显示方案 - 开源研究系列文章

上次编写了《LUAgent服务器端工具》这个应用,然后里面需要新启动一个线程去对文件进行上传到FTP服务器,但是新线程里无法对应用主线程UI的内容进行更改,所以就需要在线程里设置主UI线程里控件信息的方法,于是就有了此博文。此文记录的是一种高级用法。 为了实际的使用,笔者将线程操作放在独立的类当中,

C#/.NET/.NET Core编程技巧练习集(学习,实践干货)

DotNet Exercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core各种编程常用语法、算法、技巧、中间件、类库等等。 GitHub开源地址:https:/