EventHandler與Action的事件驅動

  • 1511
  • 0

EventHandler與Action的事件驅動

直接看程式碼

使用EventHandler是比較正規的作法

 

    {
        public event EventHandler<NameChangedEventArgs> NameChanged;

        private event Action<string> _NameActionChanged;          
        public event Action<string> NameActionChanged
        {
            add { _NameActionChanged += value; }
            remove { _NameActionChanged -= value; }
        }      

        static void Main(string[] args)
        {
            Program p = new Program();

            //使用EventHandler
            p.NameChanged += new EventHandler<NameChangedEventArgs>(p_NameChanged);
            p.NameChanged(null, new NameChangedEventArgs() { name = "dyco" });
            //使用Action
            p.NameActionChanged += new Action<string>(p_NameActionChanged);
            p._NameActionChanged("dyco");
        }

        static void p_NameActionChanged(string name)
        {
            Console.WriteLine(name);
            Console.Read();
        }

        static void p_NameChanged(object sender, NameChangedEventArgs e)
        {
            Console.WriteLine(e.name);
            Console.Read();
        }

        public class NameChangedEventArgs : EventArgs
       {
           public string name { get; set; }          
       }

        
    }