C#笔记 泛型 Generic
来源:互联网 发布:mac商店英文改中文版 编辑:程序博客网 时间:2024/06/16 13:19
使用泛型(generic)
unity里还是很常见的,这里<>里填写你需要的类型。
例如:
// 拿到组件GetComponent<Render>().sortingOrder = 0;// 可排序对象public class B : IComparable<B>// 泛型集合,字典等Dictionary<string, B> mydic = new Dictionary<string, B>();// 等等
泛型的可以避免强转
c#2(版本)出现了泛型。在c#1时只能使用强转,例如在使用非泛型集合(ArrayList)的时候。如果强制转换了错误的类型……
下面代码在mylist位置3插入了另外的类型。
ArrayList mylist;mylist = new ArrayList();A a1 = new A();myList.Add(a1);A a2 = new A();myList.Add(a2);B b = new B();myList.Add(b);// 竟然加入一个别的类型元素for ( int i = 0; i < mylist.Count; i ++ ){ A a = (A)mylist[i]; //强转骗过了编译器 a.DoSomething();}
where关键字
where T :后面的内容可以限制T是什么。
public class SomeClass{ public T GenericMethod<T>( T param ) where T : class { return param; }}
比较常见的where后面会跟:
class表示T是一个引用类型。可以使用null。
struct表示T是一个值类型。
new()表示T有个public的无参数的构造函数。
MonoBehavior(一个类)表示T是这个类。
IEnumerable(一个接口)表示T有这个接口的实现。
自己主动使用泛型
处理算法相似只是要处理的类型不同的时候,可以考虑把统一的算法用泛型来处理。
比如各种容器类(List、Array等)会碰到。
比如一个Line的封装,可以是2D或3D。这时写一个Line,可以是Line Line。
比如读取XML的一部分,如下:
public static void SetObjectValue<T>( T obj, string fieldname, object value ){ System.Reflection.FieldInfo info = obj.GetType().GetField(fieldname); if ( info != null ) { info.SetValue(obj, value); }}public class Player{ public string name = string.Empty; public int id = 0;};Player p = new Player();SetObjectValue<Player>( p, "name", "tom" );SetObjectValue<Player>( p, "level", 100 );
比如泛型委托,如下:
public class ImplementingClass{ public float WhichIsBig( int a, float b ) { if ( a > b ) return a; else return b; }}public delegate float CallDelegate<T,S>( T t, S s );CallDelegate<int, float> delegateBig = new CallDelegate<int, float>( new ImplementingClass().WhichIsBig );float big = delegateBig( 10, 25.0f );
0 0
- C#笔记 泛型 Generic
- [笔记]C#自定义Generic类
- C#学习-- 泛型Generic
- C# 泛型(Generic)
- C# 泛型(Generic)
- C#梳理【泛型Generic】
- C#学习笔记之——泛型(Generic)
- 泛型(generic)是C#语言2
- C# 泛型generic的简单理解
- Java Generic 泛型 - Java 学习笔记 (24)
- java学习笔记——泛型Generic
- JAVA学习笔记(二十五) - 泛型Generic
- JAVA学习笔记(五十六)- 泛型 Generic Types
- 泛型 generic
- 泛型(Generic)
- 泛型generic
- 泛型(Generic)
- Generic(泛型)
- Linux grep 命令
- Git bash 操作记住密码
- XAMPP Apache 配置多端口和多域名方法
- 使用AFNetworlk上传多张图片
- HDU 1003:Max Sum
- C#笔记 泛型 Generic
- sftp用户本机登录后,pwd总是在根目录
- PAT 数据结构 02-线性结构2. 一元多项式求导 (25)
- 每天一个linux命令(49):at命令
- 悟空学Linux专栏----第23篇
- 利用套打和分栏巧妙来做商品价签
- AOP与IOC理解
- 让一个Activity在开机后自动显示(可推广到开机自启服务)
- iOS UITableviewCell的删除