C# 委派

  • 425
  • 0

C# 委派的流程與使用介紹

最近兩個月又翻回去大學的專題。

開始重構,只能說大學的時候真的不夠認真阿。太多東西都沒好好學,物件導向的精神都不懂。就只會用基本類型處存資料。

後來開始學一點app開發,開始會用Object來處存資料。這樣資料比較不會那麼瑣碎,程式碼也變很覺簡潔。

開始今天的C# 委派介紹

委派簡單一點來說就是可以把一堆傳入一樣參數類型的方法放在一起,要用的時候可以一次呼叫多個來執行

宣告委派

public delegate 回傳直 方法名稱(參數);

宣告委派範例

public delegate void say(String say);

記得後面要透過委派的方法的回傳值跟傳入參數都要一樣。一樣的回傳值,一樣的傳入參數類型跟一樣數量的參數。

實例化範例

say s = new say(Saysome); //只是宣告s會執行到Saysome方法還不會真的執行

掛載範例

s += new say(Saything); //s再掛載Saything方法,只是宣告而已也還不會執行,表示後面會額外執行Saything方法

執行範例

s.Invoke("說說看"); //表示執行s委派,後面括弧要填入的就是委派後面宣告的傳入參數。
s("說說看") //也可以這樣寫。

 

完整的委派範例

class Program
    {
        public delegate void say(String say);
        static void Main(string[] args)
        {
            say s = new say(Saysome);  
            s.Invoke("說說看");        //輸出結果 Saysome : 說說看
            s += new say(Saything);
            s.Invoke("第一次說說看");   //輸出結果 Saysome :第一次說說看
                                      //        Saything : 第一次說說看     因為前一行有再掛載Saything方法 所以多一行
            s -= new say(Saything);   
            Console.WriteLine("------卸載Saything之後-----");
            s.Invoke("第二次說說看");   //輸出結果 Saysome : 第二次說說看 因為上上一行已經把Saything卸載掉了 所以只剩Saysome方法
            Console.ReadLine();
        }
        public static void Saysome(String say1){
            Console.WriteLine("Saysome : "+say1);
        }
        public static void Saything(String say2)
        {
            Console.WriteLine("Saything : "+say2);
        }
    }

輸出結果