泛型中的default(T)
writeline输出数值变量(摘⾃天翼空间应⽤⼯⼚)
msdn定义:
在泛型类和泛型⽅法中产⽣的⼀个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T:
T 是引⽤类型还是值类型。
如果 T 为值类型,则它是数值还是结构。
给定参数化类型 T 的⼀个变量 t,只有当 T 为引⽤类型时,语句 t = null 才有效;只有当 T 为数值类型⽽不是结构时,语句 t = 0才能正常使⽤。解决⽅案是使⽤default 关键字,此关键字对于引⽤类型会返回 null,对于数值类型会返回零。对于结构,此关键字将返回初始化为零或 null 的每个结构成员,具体取决于这些结构是值类型还是引⽤类型。对于可以为 null 的值类型,默认返回 System.Nullable<T>,它像任何结构⼀样初始化。
其中还提供了例⼦。例⼦很完美。
还有⼀种引申的⽤法here(寒风凌意同学的blog):
Console.WriteLine(null==default(List<int>)); Console.WriteLine(default(int));
Console.WriteLine(default(bool));
结果为true,0和false
下⾯是MSDN中提供的例⼦:
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;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论