C#泛型在unity3D中的運用…

來源:互聯網
上載者:User

泛型是什嗎?

這是摘自百度百科中對泛型的介紹:

?
泛型是c#2.0的一個新增加的特性,它為使用c#語言編寫物件導向程式增加了極大的效力和靈活性。不會強行對實值型別進行裝箱和拆箱,或對參考型別進行向下強制類型轉換,所以效能得到提高。通過知道使用泛型定義的變數的類型限制,編譯器可以在一個高得多的程度上驗證類型假設,所以泛型提高了程式的型別安全。它允許程式員將一個實際的資料類型的規約延遲至泛型的執行個體被建立時才確定。泛型為開發人員提供了一種高效能的編程方式,能夠提高代碼的重用性,並允許開發人員編寫非常優雅的解決方案。

看過之後,會用的還是懂;不會用的,也還是不懂。

所以我們還是看看泛型具體在程式中的應用:

//泛型方法//unity3D中用的最多的泛型方法應該是GetCompent<T>//T就是預留位置,當調用這個方法的你要告訴編譯器,這個T的具體類型。//另外,"T"只是一個標識,完全可以用其他代替,如"K","MyType"等,只是使用習慣。//比如:GameObject player;Animator animator;void Start()    {//在情境中找到名為MyPlayer物體player = GameObject.Find("MyPlayer");//擷取該物體上的Animator組件animator = player.GetComponent<Animator>();//對於使用AddComponent<T>()、GetCompent<T>()這兩個泛型方法來說,需要瞭解的就是:T就是你想要的具體的組件類型。//對於泛型方法來說,泛型的作用就是佔位和約束的作用。    }       //下面來說聲明泛型函數    /// <summary>    /// 比較等級;    /// </summary>    /// <returns>    /// 若t1>=t2的等級,則返回true;否則返回false    /// </returns>    /// where T : IRole where K : IRole的作用是約束傳入的兩個參數類型必須要實現IRole這個介面;    /// 這樣就定義好了一個泛型方法    public bool CompareLevel<T,K>(T t1,    K t2) where T : IRole where K : IRole    {        //因為泛型t1,t2都被約束需要實現介面,所以我們可以強制轉換到IRole來擷取level比較        return ((IRole)t1).level >= ((IRole)t2).level;    }    //那麼怎麼使用呢?    //接下來看:    public void Test()    {        //先定義三個測試用的類型        MyNPC npc =new MyNPC();        MyPlayer player =new MyPlayer();        MyMonster monster =new MyMonster();        //對各個類型的level賦值        npc.level =1;        player.level =2;        monster.level =3;        //比較npc和player的level就很簡單了,只需要這樣調用即可        bool b1 = CompareLevel<MyNPC,MyPlayer>(npc,player); //npc?payer//false                            bool b2 = CompareLevel<MyNPC,MyMonster>(npc,monster);//npc?monster//false        bool b3 = CompareLevel<MyPlayer,MyMonster>(player,monster);//payer?monster//false    }        public interface IRole     {        int level{get;set;}    }    public class MyPlayer:IRole    {        public int level{get;set;}    }    public class MyNPC:IRole    {        public int level{get;set;}    }    public class MyMonster:IRole    {        public int level{get;set;}    }

這隻介紹了泛型方法的使用。還有泛型類,泛型介面等,在此就不多說了。

用C#開發unity3D遊戲用的最多的泛型應該還是泛型集合List<T>之類的,這些就靠平時慢慢熟悉了。

http://www.cnblogs.com/wiyi/archive/2013/02/19/2917275.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.