上位机C#-委托

本文详细介绍了C#中的委托概念,包括它的本质、应用和使用步骤。委托是一种引用类型,可以持有多个相同签名和返回类型的方法。文章讨论了命名方法委托、多播委托和匿名委托的使用,强调了多播委托在方法列表管理和调用中的特点,以及匿名委托在一次性简单任务中的作用。

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

目录

一、什么是委托

二、委托的应用

三、使用委托的具体步骤

四、委托的类型(命名方法委托,多播委托,匿名委托)

1.命名方法委托

2.多播委托 

3.匿名委托


一、什么是委托

委托是C#中的一种引用类型,委托的本质是一个类,定义了方法的类型,是将方法作为参数传递到另一个方法的特殊类。
委托可以认为是持有一个或者多个方法的对象,当委托被调用时,它持有的方法也会被调用。
委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。
委托不是对象,是一种类型。

二、委托的应用

委托的使用遵循三步走的原则,即定义声明委托,实例化委托,调用委托。

三、使用委托的具体步骤

  1. 定义声明委托
  2. 实例化委托(给委托赋值)
  3. 调用委托

### C# 上位机委托和事件的用法及实现 #### 什么是委托委托是一种类型安全的方法指针,允许方法作为参数传递给其他方法。通过定义委托,可以创建一种机制,在特定条件下调用某个方法[^2]。 ```csharp public delegate void Notify(string message); ``` 此代码片段展示了如何声明一个名为 `Notify` 的委托,该委托接受一个字符串类型的参数并返回 `void`。 #### 创建委托实例 一旦定义了委托类型,就可以像这样创建其实例: ```csharp // 定义一个符合上述委托签名的方法 private static void PrintMessage(string msg) { Console.WriteLine(msg); } // 创建委托实例并将它绑定到PrintMessage方法 Notify notifyDelegate = new Notify(PrintMessage); // 或者更简洁的方式 notifyDelegate += PrintMessage; ``` #### 如何触发委托? 当条件满足时可以通过调用委托来执行已注册的方法: ```csharp if (someCondition) { notifyDelegate?.Invoke("Some condition met!"); } ``` 这里使用了可空运算符(`?`)以防止尝试调用未初始化的委托而引发异常。 #### 构建自定义事件 基于之前定义好的委托类型, 可以为类添加公共事件成员以便外部订阅这些通知消息. ```csharp public class DataReceiver { public event Notify OnDataReceived; private string _data; // 模拟接收数据的过程 internal void ReceiveData() { _data = "New data arrived"; // 当接收到新数据时触发事件 OnDataReceived?.Invoke(_data); } } ``` 这段代码展示了一个简单的场景——每当有新的数据到达时就会触发 `OnDataReceived` 事件,并将最新获取的数据发送出去。 #### 订阅与取消订阅事件 客户端代码可以通过加号 (`+=`) 和减号 (`-=`) 来分别订阅或退订指定的对象上的某项具体活动的通知服务。 ```csharp var receiver = new DataReceiver(); receiver.OnDataReceived += PrintMessage; // 订阅 try { receiver.ReceiveData(); } finally { receiver.OnDataReceived -= PrintMessage; // 取消订阅 } ``` 以上就是关于C#上位机应用开发过程中对于委托以及事件的基础理解和实践操作介绍[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值