您的位置:首页 > 其它

泛型

2016-04-10 21:53 211 查看
1.1 泛型性能

  不需要进行装箱和拆箱工作。例如:

var list = new ArrayList();
list.Add(1);            //装箱工作
int i = (int)list[0];   // 拆箱工作


  虽然装箱和拆箱工作很容易,但是很容易损耗性能。使用泛型例如:

var list = new List<int>();
list.Add(1);
int i = list[0];


1.2 类型安全

  使用ArrayList可以随意添加类型数据IDE不会报错,在遍历的时候才会报错,例如:

var list = new ArrayList();
list.Add(1);
list.Add("1");
list.Add(1.23);

foreach (int i in list)
{
Console.Write(i);
}


  但是使用泛型,IDE会报错

var list = new List<int>();
list.Add(1);
list.Add("1");  // error
list.Add(1.23); // error


2.1 泛型累的定义

T node = default(T);
lock (this)
{
node = new LinkList<int>();
}
return node;


View Code
2.3 泛型的约束

public class LinkNode<TLink> where TLink :ILink

public class LinkNode<TLink> where TLink :IFoo,new()


第二个类型T必须实现IFoo接口,而且必须有一个默认的构造函数

            约束 说明

where T:struct 使用结构约束,类型T必须是值类型

where T:calss 类约束指定,类型T必须是引用类型

where T:IFoo 指定类型T必须执行结构IFoo

where T:Foo 指定类型T必须派生于基类Foo

where T:new() 指定类型T必须有一个默认构造函数

where T:U 类型T派生于泛型类型V(裸类型约束)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: