• 委托的一个完整范例范例


    namespace DelegateSample
    {
     
        //1,委托实质上是一个类,它继承自System.MulticastDelegate 
     
        //2,我们可以在任何声明类的地方声明一个委托。 
     
         //3,声明委托使用delegate关键字  
     
        //4,注册到委托的方法的签名必须跟委托一致,这就是为什么说c#中的委托是类型安全的。 
     
        //(这里的签名包括返回值和参数类型及参数个数。) 
     
        public delegate void Log(string message);//声明委托
     
        class UserService
        {
            public Log LogDelegate { get; set; }//前面定义的Log类型的委托的变量。
     
            public UserService() { }
     
            public void Register(User user)
            {
                if (user.Name == "Kirin")
                { 
     
                   //像调用方法那样让委托执行。
                    LogDelegate("注册失败,已经包含名为" + user.Name + "的用户");
                }
                else
                {
                    LogDelegate("注册成功!");
                }
            }
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                User user = new User { Name = "Kirin", Password = "123" };
                UserService service = new UserService();
     
                //把静态方法LogToConsole注册到委托。 
                service.LogDelegate = LogToConsole;
     
                Program p = new Program();
     
                //把实例方法LogToTextFile注册到委托。
                //委托可以保持多个对象的引用(这里是多个方法)。 
                service.LogDelegate += p.LogToTextFile;
     
                //在这个方法内将会调用Log委托的实例LogDelegate 
                service.Register(user);
                Console.ReadLine();
            }
     
            static void LogToConsole(string message)
            {
                Console.WriteLine(message);
            }
     
            void LogToTextFile(string message)
            {
                using (StreamWriter sw = File.AppendText("log.txt"))
                {
                    sw.WriteLine(message);
                    sw.Flush();
                    sw.Close();
                }
            }
        }
    }
  • 相关阅读:
    numpy函数库中一些常用函数的记录
    python 中的tile函数,shape函数,sum函数
    数据挖掘十大经典算法(详解)
    逻辑回归
    17个新手常见Python运行时错误
    5.3.4 Hadoop序列化框架
    5.3.3 自定义writable和RawComparatorWritable
    Qt5.11.2 VS2015编译activemq发送程序 _ITERATOR_DEBUG_LEVEL错误和崩溃解决
    @ConfigurationProperties实现配置注入到实体类
    C++微信网页协议实现和应用
  • 原文地址:https://www.cnblogs.com/mylife_001/p/2135005.html
Copyright © 2020-2023  润新知