說說C#委託

來源:互聯網
上載者:User

一聽到委託,當然就感覺到這件事情是給某東西去做。

比如,你委託啊新哥去買包煙 ,委託是不是好像只是一種聲明一樣,真正的動作是去買煙().也就是教材書上說的方法的簽名

那先看看委託的聲明: public delegate string (string name); //public 修飾符 delegate聲明委託的關鍵字 void 是傳回型別 name當然是參數

還要說明的是 委託是一種類型。好了其它的不多說,先來用用委託這東西

委託儲存的是方法的地址 
買煙 my 所以my我們也就可能是一個方法
既然這個東西這麼好,用誰就是指向誰就好,是不是少了很多if swtihc的判斷(因為你要誰就指向誰了,當然就有這種感覺呢!)
下面一步一步來體現這種感覺
我們知道打招乎中國人當然是中文,英國人當然是英文
英國人打招乎:
    ////英文    public void EnglishGreeting(string name)    {        Console.WriteLine("Morning"+name);    }

 中國人打招乎:

   ////中文    public void ChineseGreeting(string name)    {        Console.WriteLine("早上好, " + name);    }

  

 ////如果要加另外一些國家的方法呢??    public enum Language    {         English,Chinese    }    ////問候人們的方法 ,當然越來越多呢?????    public void GreePeople(string name, Language lange)    {         switch(lange)        {            case Language.English:                EnglishGreeting(name);                break;            case Language.Chinese:                ChineseGreeting(name);                break;        }    }

  上面我們有用枚舉和switch分支來判斷是那個人打招乎了,並調用某一方法。實現不同國家的人調不同的方法,那問題又來了,哥們如果在加些一法國,德國。。。一些國家

那麼這個swtich分支結構就不好寫了是不,越來越多了!上面不是說了嘛,用誰就調用誰嘛!把委託當作當參數,用誰就指向誰的方法

   private static void EnglishGreeting(string name)        {            Console.WriteLine("Morning," + name);        }        private static void ChineseGreeting(string name)        {            Console.WriteLine("早上好," + name);        }        //用委託類型作為參數來傳遞        private static void GreePeople(string name, GreetingDelegate MakeGreeting)        {            MakeGreeting(name);        }

  

引用網上看到的一句話:委託是一個類,它定義了方法的類型,

使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,

可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴充性。

好了委託就說說這裡,也是簡單的說了下,希望對朋友們有協助

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.