随笔 - 1330  文章 - 1  评论 - 378  阅读 - 482万 

委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。委托的类型由委托的名称定义。下面的示例声明了一个名为 Del 的委托,该委托可以封装一个采用字符串作为参数并返回 void 的方法。

构造委托对象时,通常提供委托将包装的方法的名称或使用匿名方法。实例化委托后,委托将把对它进行的方法调用传递给方法。调用方传递给委托的参数被传递给方法,来自方法的返回值(如果有)由委托返回给调用方。这被称为调用委托。可以将一个实例化的委托视为被包装的方法本身来调用该委托.

委托类型派生自 .NET Framework 中的 Delegate 类。委托类型是密封的,不能从 Delegate 中派生委托类型,也不可能从中派生自定义类。由于实例化委托是一个对象,所以可以将其作为参数进行传递,也可以将其赋值给属性。这样,方法便可以将一个委托作为参数来接受,并且以后可以调用该委托。

 

复制代码

using System;

namespace
 DelegateDemo
{
    
//声明一个委托,委托的类型由委托的名称定义。

    public delegate void Del(string message);
    
/// <summary>

    
/// Summary description for Class1.
    
/// </summary>

    class Class1
    {
        
/// <summary>

        
/// The main entry point for the application.
        
/// </summary>

        [STAThread]
        
static void Main(string
[] args)
        {
            
//实例化委托

            Del handler = new Del(DelegateMethod);
            
//
委托多路广播
            
//handler += new Del(DelegateMethod2);

            handler("invoke delegate");
            
//将上面创建的委托传递给该方法

            MethodWithCallback(handler);
            Console.Read();
        }
        
public static void DelegateMethod(string
 message)
        {
            System.Console.WriteLine(message);
        }
        
public static void DelegateMethod2(string
 message)
        {
            System.Console.WriteLine(
"this is 2 "+
message);
        }
        
//将上面创建的委托作为参数传递给该方法

        public static void MethodWithCallback(Del callback)
        {
            callback(
"callback delegate"
);
        }

    }
}

复制代码
posted on   钱途无梁  阅读(254)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示