事件 与 委托 Invoke() BeginInvoke()

 总结: 1.  事件可以  用 +=  
             2.  委托 用 =               委托包括 事件委托

 都要调用委托方法相应的方法才能调用执行

封装一个方法,该方法不具有参数且不返回值。

C#复制

public delegate void Action();

继承

Object

Delegate

Action

public delegate void ShowValue();   // 这个可以被下面的Action 替换掉,因为Action 就是一个委托类型

ShowValue showMethod = testName.DisplayToConsole;

showMethod();  //  调用委托方法

 class Program
    {
         static void Main(string[] args)
        {
            Name testName = new Name("Hello");
            testName.OnTest += testName.DisplayToConsole;    // 这是事件
            // Action showMethod = testName.DisplayToConsole;
            // showMethod(); or   showMethod.Invoke();         //1.。 这是委托
            testName.Init();     // 2. 如果去掉这句,则这个Init()方法里的委托事件并没有调用,则不会执行+= 右边的函数
            Console.Read();
        }
    }

    public class Name
    {

        public event Action OnTest;

        private string instanceName;

        public Name(string name)
        {
            this.instanceName = name;
        }
        
        public void DisplayToConsole()
        {
            Console.WriteLine(this.instanceName);
        }
        public  void Init()
        {
            OnTest();
        }
    }

猜你喜欢

转载自blog.csdn.net/softuse/article/details/82784633