page contents

什么是C#委托?

Nen 发布于 2022-11-09 16:26
阅读 125
收藏 0
分类:C/C++开发
4399
王昭君
王昭君

委托就像函数指针,它是一个引用数据类型,保存着方法的引用。我们使用委托来编写泛型类型安全函数。所有委托都派生自 System.Delegate。可以使用 delegate 关键字后跟函数签名来声明委托,如下所示。这些是代表的特征:

  • 委托派生自 System.Delegate 类
  • 代表具有签名和返回类型。分配给代表的函数必须符合此签名
  • 代表可以指向实例方法或静态
  • 委托对象一旦创建,就可以在运行时动态调用它所指向的方法
  • 委托可以同步和异步调用方法

请参考以下示例:

using System;
namespace demoapp
{
    class DelegateClass
    {
        // declare delegate
        public delegate void Print(int value);

        static void Main(string[] args)
        {
            // Print delegate points to PrintNumber
            Print printDel = PrintNumber;
            // or
            // Print printDel = new Print(PrintNumber);

            printDel(100000);
            printDel(200);

            // Print delegate points to PrintMoney
            printDel = PrintMoney;
            printDel(10000);
            printDel(200);
        }

        public static void PrintNumber(int num)
        {
            Console.WriteLine("Number: {0,-12:N0}", num);
        }

        public static void PrintMoney(int money)
        {
            Console.WriteLine("Money: {0:C}", money);
        }
    }
}
请先 登录 后评论