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

C#中的拜托、事宜進修筆記

編輯:C#入門知識

C#中的拜托、事宜進修筆記。本站提示廣大學習愛好者:(C#中的拜托、事宜進修筆記)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中的拜托、事宜進修筆記正文


1.拜托delegate

拜托delegate也是一品種型,在任何可以聲明類的處所都可以聲明拜托,它將辦法當作另外一個辦法的參數停止傳遞,如許便可以傳遞分歧的辦法,完成分歧的功效,使法式具有很好的可擴大性。

舉例:

假定這裡有一台電腦,有人會用它寫法式,有人會用它打游戲,有人會用它看片子,有人會用它邊聽音樂邊玩游戲,有人會用它邊聽音樂邊看文檔,邊上QQ。

這台電腦可以籠統成一個類Computer,外面有個辦法DoWork,一切的人都要經由過程這個辦法來做本身的工作。

不消拜托的時刻我們可以完成一些固定的器械,不敷靈巧:

例如:

class Program {
        static void Main(string[] args) {
            Computer computer = new Computer();
            computer.DoWork("豬八戒", "在看片子!");
            computer.DoWork("沙僧人", "在寫法式!");
            computer.DoWork("孫悟空", "在玩游戲!");
        }
    }

    public class Computer {
        public void DoWork(string name, string work) {
            Console.WriteLine("{0}{1}", name, work);
        }
    }

下面的代碼,很逝世板,挪用DoWork的時刻只能做一件工作。

所以上面輪到拜托退場了。

代碼以下:


public delegate void WorkEventHandle(string name);

    class Program {
        static void Main(string[] args) {
            Computer computer1 = new Computer();
            WorkEventHandle work = Do1;
            computer1.DoWork("孫悟空", work);

            Console.WriteLine("");

            work = Do2;
            computer1.DoWork("八戒", Do2);
        }

        static void Do1(string name) {
            Console.WriteLine("{0}在上QQ!", name);
            Console.WriteLine("{0}在聽音樂!", name);
            Console.WriteLine("{0}在玩游戲!", name);
        }

        static void Do2(string name) {
            Console.WriteLine("{0}在聽音樂!", name);
            Console.WriteLine("{0}在寫代碼!", name);
        }
    }

    public class Computer {
        public void DoWork(string name, WorkEventHandle Work) {
            Work(name);
        }
    }

拜托總結:

      長處:拜托可以作為辦法的一個參數來傳遞。誰要挪用Computer裡的DoWork來完成本身的工作,誰就完成拜托綁定的辦法,如許便可以依照本身的需求傳遞分歧的辦法,使法式具有了很好的擴大性。

      缺陷:我們可以隨便的給拜托停止賦值,如許就損壞了法式的封裝性。

2. 事宜

為了填補拜托的缺點,所以事宜湧現了,我們只能對事宜停止“+=”和“-=”操作,弗成以對事宜停止賦值(=)操作。
下面的實例用事宜完成以下:


public delegate void WorkEventHandle(string name);

    class Program {
        static void Main(string[] args) {
            Computer computer1 = new Computer();
            computer1.Work += new WorkEventHandle(Do1);

            computer1.DoWork("孫悟空");

            Console.WriteLine("");
            computer1.Work += new WorkEventHandle(Do2);

            computer1.DoWork("八戒");
        }


        static void Do1(string name) {
            Console.WriteLine("{0}在上QQ!", name);
            Console.WriteLine("{0}在聽音樂!", name);
            Console.WriteLine("{0}在玩游戲!", name);
        }

        static void Do2(string name) {
            Console.WriteLine("{0}在聽音樂!", name);
            Console.WriteLine("{0}在寫代碼!", name);
        }
    }

    public class Computer {
        public event WorkEventHandle Work;
        public void DoWork(string name) {
            if (Work != null) {
                Work(name);
            }
        }
    }

總結:

拜托既可以停止“+=”和“-=”操作,也能夠停止賦值(=)操作,拜托不具有封裝性
事宜只可以停止“+=”和“-=”操作,事宜具有封裝性。

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