委托本身是一种引用类型,它保存的也是托管堆中对象的引用,只不过这个引用比较特殊,他是对方法的引用。事件本身也是委托,他是委托组,C#中提供了关键字event来对事件进行特别区分的。

一、了解委托的实质:

  1.委托是方法指针
  2.委托是一个类,当对其进行实例化的时候,要将引用方法作为它的构造方法的参数

  示例:设计一个点对点文件传输,有以下几个基本功能:
    1.传输文件
    2.按照百分制通知传输进度
    3.传输类能同时被控制台应用程序和Winform应用程序使用

  分析:由于要让通知本身能被控制台应用程序和Winform应用程序使用,因此设计的这个文件传输类在进行通知时,就不能显示地调用;
      Console.WriteLine("当前进度:"+fileProgress);

     理想的情况是,在需要通知的地方,全部将器置换成一个方法的指针,有调用者来决定该方法完成什么功能。这个方法指针在C#中被理解成委托。可以声明:
      public delegate void FileUploadedHandler(int progress)

    这个类最终形式:

      

    class FileUploader
    {
        public delegate void FileUploadedHandler(int progress);
        public FileUploadedHandler FileUploaded;

        public void Upload()
        {
            int fileProgress = 100;
            while (fileProgress > 0)
            {
                //传输代码,略
                fileProgress--;
                if (FileUploaded != null)
                {
                    FileUploaded(fileProgress);
                }
            }
        }
    }
View Code

相关文章:

  • 2021-09-01
  • 2021-06-07
  • 2022-12-23
  • 2021-08-06
  • 2021-05-17
猜你喜欢
  • 2021-11-16
  • 2021-08-20
  • 2021-10-27
  • 2021-11-07
  • 2021-10-25
  • 2022-02-17
  • 2021-04-18
相关资源
相似解决方案