泛型
2016-04-10 21:53
211 查看
1.1 泛型性能
不需要进行装箱和拆箱工作。例如:
虽然装箱和拆箱工作很容易,但是很容易损耗性能。使用泛型例如:
1.2 类型安全
使用ArrayList可以随意添加类型数据IDE不会报错,在遍历的时候才会报错,例如:
但是使用泛型,IDE会报错
2.1 泛型累的定义
View Code
2.3 泛型的约束
第二个类型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(裸类型约束)
不需要进行装箱和拆箱工作。例如:
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(裸类型约束)
相关文章推荐
- 20145302张薇《Java程序设计》第六周学习总结
- 20145330《Java程序设计》第一次实验报告
- 面试题61 把二叉树打印成多行
- 可执行程序的装载
- Linux的五个查找命令
- scoped_ptr,scoped_array
- boost解析argv
- 20145310 《Java程序设计》第6周学习总结
- 冒泡,选择,插入,快速排序在Java中的实现
- OpenGL超级宝典笔记----框架搭建
- Mac 上编译 ffmpeg 方法
- 从头到位打印链表
- 递归小结
- Python中strip(),lstrip(), rstrip()使用方法
- hihocoder 1290:Demo Day
- 静态成员
- 应用层常见的协议及对应的端口号
- 网页三
- C++primer 练习12.27
- MyEclipse6.5上配置Tomcat7