假设我有这个函数,它为任何类型实例化一个具有默认/空值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为可空结构以及如何实例化可空结构。