1. <dd id="jcnig"><nav id="jcnig"><delect id="jcnig"></delect></nav></dd>
      <dfn id="jcnig"><tt id="jcnig"><sup id="jcnig"></sup></tt></dfn>

    2. <cite id="jcnig"></cite>
      <cite id="jcnig"><tt id="jcnig"></tt></cite>

      <address id="jcnig"><nav id="jcnig"></nav></address>
    3. <address id="jcnig"><nav id="jcnig"></nav></address>
      400-650-7353

      精品課程

      您所在的位置:首頁 > IT干貨資料 > unity > 【Unity基礎知識】委托和事件

      【Unity基礎知識】委托和事件

      • 來源:Unity干貨資料
      • 2021-03-18 19:40:06
      • 閱讀()
      • 分享
      • 手機端入口

      看了之前的文章,大家都知道Unity使用腳本最主流的語言就是C#語言。作為程序員小哥哥,平時經常會聽到C#語言中的委托和事件吧。我們今天重點來學習一下委托。

      委托和事件各種項目的應用非常廣泛,然而,較好地理解委托和事件對很多接觸C#時間不長的人來說并不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委托和事件就覺得心里憋得慌,渾身不自在。本文中,將通過兩個案例由淺入深地講述什么是委托、為什么要使用委托以及事件的由來。

      委托的關鍵字是delegate。也就是和int、string一樣,用delegate關鍵字來聲明一個委托類型。而委托的聲明方式和類卻完全不同,這是怎么一回事?實際上,委托在編譯的時候確實會編譯成類。因為所定義的委托類型在C#中屬于引用類型,也是一個類,所以在任何可以聲明類的地方都可以聲明委托類型。更多的內容將在下面講述,現在,請看看這個案例的完整代碼:

      using System;

      using System.Collections.Generic;

      using System.Text;

      namespace Delegate {

      //定義委托,它定義了可以代表的方法的類型

      public delegate void GreetingDelegate(string name);

      class Program {

      private static void EnglishGreeting(string name) {

      Console.WriteLine("Morning, " + name);

      }

      private static void ChineseGreeting(string name) {

      Console.WriteLine("早上好, " + name);

      }

      //注意此方法,它接受一個GreetingDelegate類型的方法作為參數

      private static void GreetPeople(string name, GreetingDelegate MakeGreeting) {

      MakeGreeting(name);

      }

      static void Main(string[] args) {

      GreetPeople("Jimmy Zhang", EnglishGreeting);

      GreetPeople("張子陽", ChineseGreeting);

      Console.ReadKey();

      }

      }

      }

      輸出如下:

      Morning, Jimmy Zhang

      早上好, 張子陽

      下面我們介紹委托的常用的四種形式:

      //delegate 匿名委托

      Niming nm = delegate (string str)

      {

      Console.WriteLine("我是匿名委托" + str);

      return str.ToUpper();

      };

      Console.WriteLine(nm("nihao"));

      nm = delegate (string str)

      {

      Console.WriteLine("我是匿名委托" + str);

      return str.ToLower();

      };

      Console.WriteLine(nm("NiHAO"));

      //lambda 表達式

      //格式:(參數) =>{要執行的方法體;};

      Test test = (int a) => { a *= 10; Console.WriteLine(a); };

      test(2);

      GreetingDelegate gd = (string name) =>

      {

      Person.EnglishSpeek(name);

      Person.ChineseSpeek(name);

      Person.EnglishSpeek(name);

      };

      gd("小麗");

      //Func 委托 最后一個為返回值類型out

      Func s = delegate (string str1, string str2)

      {

      return str1 + str2;

      };

      Console.WriteLine(s("a", "b"));

      //Action委托 不需要返回值

      Action str = delegate (string str1, string str2)

      {

      Console.WriteLine(str1 + str2);

      Person.EnglishSpeek(str1);

      };

      str("你好", "喬安");

      最后,我們對委托做一個總結:

      委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴展性。

      學習疑問申請解答
      您的姓名
      您的電話
      意向課程
       

      中公優就業

      IT小助手

      掃描上方二維碼添加好友,請備注:599,享學習福利。

      >>本文地址:
      注:本站稿件未經許可不得轉載,轉載請保留出處及源文件地址。

      推薦閱讀

      優就業:ujiuye

      關注中公優就業官方微信

      • 關注微信回復關鍵詞“大禮包”,享學習福利
      QQ交流群
      在線疑問解答
      (加群備注“網站”)
      IT培訓交流群 加入群聊 +
      軟件測試 加入群聊 +
      全鏈路UI/UE設計 加入群聊 +
      Python+人工智能 加入群聊 +
      互聯網營銷 加入群聊 +
      Java開發 加入群聊 +
      PHP開發 加入群聊 +
      VR/AR游戲開發 加入群聊 +
      大前端 加入群聊 +
      大數據 加入群聊 +
      Linux云計算 加入群聊 +
      優就業官方微信
      掃碼回復關鍵詞“大禮包”
      享學習福利

      測一測
      你適合學哪門IT技術?

      1 您的年齡

      2 您的學歷

      3 您更想做哪個方向的工作?

      獲取測試結果
       
      課程資料、活動優惠 領取通道
       
       
      日本一本二本三本av网站,一本加勒比HEZYO东京热高清,一本久久A久久精品综合