泛型代码中的默认关键字
2016-06-03 10:27
381 查看
在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T:
T 是引用类型还是值类型。
如果 T 为值类型,则它是数值还是结构。
给定参数化类型 T 的一个变量 t,只有当 T 为引用类型时,语句 t = null 才有效;只有当 T 为数值类型而不是结构时,语句 t = 0 才能正常使用。解决方案是使用 default 关键字,此关键字对于引用类型会返回空,对于数值类型会返回零。对于结构,此关键字将返回初始化为零或空的每个结构成员,具体取决于这些结构是值类型还是引用类型。以下来自 GenericList<T> 类的示例显示了如何使用 default 关键字。有关更多信息,请参见泛型概述。
C#
T 是引用类型还是值类型。
如果 T 为值类型,则它是数值还是结构。
给定参数化类型 T 的一个变量 t,只有当 T 为引用类型时,语句 t = null 才有效;只有当 T 为数值类型而不是结构时,语句 t = 0 才能正常使用。解决方案是使用 default 关键字,此关键字对于引用类型会返回空,对于数值类型会返回零。对于结构,此关键字将返回初始化为零或空的每个结构成员,具体取决于这些结构是值类型还是引用类型。以下来自 GenericList<T> 类的示例显示了如何使用 default 关键字。有关更多信息,请参见泛型概述。
C#
public class GenericList<T> { private class Node { //... public Node Next; public T Data; } private Node head; //... public T GetNext() { T temp = default(T); Node current = head; if (current != null) { temp = current.Data; current = current.Next; } return temp; } }
相关文章推荐
- 开源作业调度框架 - Quartz.NET - ASP.NET部署
- 浅析Java中JSONObject和JSONArray使用
- Dom4j解析XML学习代码
- Spring事物(Transaction)配置
- numpy读写文件
- Java 序列化Serializable详解(附详细例子)
- Eclipse maven工程如何builde target
- java静态工厂(单个方法,也可以有多个方法)
- 编程设计大赛(倒计时)
- 通过模板的特化实现 简单的类型萃取 实现memcppy时候对于特殊类型如string类的拷贝。
- c++ 之广义表
- C语言时间函数使用详解
- vs2010编译64位qt5.5
- 一段常用的加解密代码demo
- Struts2中属性驱动与模型驱动
- Java基本类型总结
- eclipse 搭建 python 开发环境
- java中new对象分析
- spring配置核心控制器问题
- Java泛型