程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 初識C#委托及委托鏈,

初識C#委托及委托鏈,

編輯:C#入門知識

初識C#委托及委托鏈,


委托是c#很重要的特性。代碼如下:

 class Program
    {
       public  delegate void DelegateTest();

        static void Main(string[] args)
        {
            DelegateTest dtstatic = new DelegateTest(Program.method1);//實例化,靜態方法,不用new
            DelegateTest dtinstance = new DelegateTest(new Program().method2);//實例方法,需要new 
            DelegateTest delegatechain = null;                         //定義為null 的委托鏈
            delegatechain += dtinstance;//用 “+”添加委托實例
            delegatechain += dtstatic;//
           
            delegatechain();
            Console.Read();





       }
        private static void method1()
        {
            Console.WriteLine("靜態方法輸出");

        }
        private void method2()
        {
            Console.WriteLine("實例方法輸出");
        }
    }

運行結果如下:

從結果可以看出委托鏈的執行順序為委托實例的添加順序;

同理,也可用“-”移除委托鏈中的委托實例:

  class Program
    {
       public  delegate void DelegateTest();

        static void Main(string[] args)
        {
            DelegateTest dtstatic = new DelegateTest(Program.method1);//實例化,靜態方法,不用new
            DelegateTest dtinstance = new DelegateTest(new Program().method2);//實例方法,需要new 
            DelegateTest delegatechain = null;                         //定義為null 的委托鏈
            delegatechain += dtinstance;//用 “+”添加委托實例
            delegatechain += dtstatic;
            delegatechain -= dtstatic;//用“-”移除委托實例
           
            delegatechain();
            Console.Read();





       }
        private static void method1()
        {
            Console.WriteLine("靜態方法輸出");

        }
        private void method2()
        {
            Console.WriteLine("實例方法輸出");
        }

運行結果如下:

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved