假设我有这个函数,它为任何类型实例化一个具有默认/空值new
的变量
public static T GetDefault<T>() where T : new() //body of this method is the question
{
T t = new T();
return t;
}
上述功能的问题是当我有类似int?
for 的东西时T
。因为如果我有
int? t = new int?();
t
将是空的!我不希望发生这种情况,而是希望int
返回的默认值是0
.
为了解决这个问题,我可以对等GetDefault
函数进行不同的重载int?
,bool?
但这并不优雅。我也可以在函数内部检查类型是否为int?
等bool?
,但我将如何实例化它的基本类型?
或者问题归结为如何识别是否T
为可空结构以及如何实例化可空结构。