1. 程式人生 > >事件 與 委託 Invoke() BeginInvoke()

事件 與 委託 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();
        }
    }