将Nullable T传递给方法

时间:2015-03-09 13:46:57

标签: c#

我有以下内容:

public void AddVariable<T>(String name, T value) where T : struct {
}

此方法接受以下内容:

AddVariable("Price", 2387);

但不接受

AddVariable("Name", "A name");

我希望T只是基本类型,如int,string,boolean ......这就是我使用struct的原因。但我认为我需要它可以接受String。

如何设置我的方法以接受可为空的基本类型?

还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

没有这样的限制。 stringint之间唯一的常见基类型是object,IConvertibleIComparable。您可以在运行时进行类型检查,或者对每种受支持的类型使用重载(如果可以节省代码重复,则使用私有泛型方法):

private void AddVariable<T>(String name, T value) 
{
    // common code here
}

public void AddVariable(String name, int value) 
{
    AddVariable<int>(name, value);
}

public void AddVariable(String name, string value) 
{
    AddVariable<string>(name, value);
}