C#泛型在unity3D中的运用.
来源:互联网 发布:r.java是什么文件 编辑:程序博客网 时间:2024/05/14 03:14
泛型是什么?
这是摘自百度百科中对泛型的介绍:
泛型是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
0 0
- C#泛型在unity3D中的运用...
- C#泛型在unity3D中的运用.
- C#泛型在unity3D中的运用.
- C#泛型在unity3D中的运用
- C#泛型在项目中的运用
- 正则表达式在C#中的运用
- MapObject2.1在C#中的运用
- Unity3D使用C#中的泛型和接口
- 泛型和委托在重构中的运用
- Unity3D中的C#事件
- Coroutines in Unity3d (C# version)----在unity3D中的协同(基于C#)
- 在C#中运用 SQLite
- WINSCOKET在HTTP中的运用
- JDOM在JAVA中的运用
- 色彩在网页中的运用
- Ajax在WebGIS中的运用
- Log4j在项目中的运用
- XML在JAVA中的运用
- 允许控制台应用程序printf显示中文
- iOS平台的arm64模式的openssl库
- SVN服务器搭建和使用(三)
- [CC]Ch18 Suffix Tree<<<TO DO
- Jquery Table 的基本操作
- C#泛型在unity3D中的运用.
- Linux多队列网卡
- mysql中isnull,ifnull,nullif的用法
- Java判断一个数是不是素数
- ios 只让播放视频的 时候能够全屏横屏 其他全部非全屏非横屏 目前已经测试很多 可以
- 算法基础系类总结
- 【码农本色】用数据解读我的2014
- 华为机试—N皇后问题(高级题160分:两种回溯法解决 吐血整理)
- Oracle表空间自动扩展的管理