我有以下内容:
public void AddVariable<T>(String name, T value) where T : struct {
}
此方法接受以下内容:
AddVariable("Price", 2387);
但不接受
AddVariable("Name", "A name");
我希望T只是基本类型,如int,string,boolean ......这就是我使用struct的原因。但我认为我需要它可以接受String。
如何设置我的方法以接受可为空的基本类型?
还有更好的方法吗?
答案 0 :(得分:2)
没有这样的限制。 string
和int
之间唯一的常见基类型是object,IConvertible
和IComparable
。您可以在运行时进行类型检查,或者对每种受支持的类型使用重载(如果可以节省代码重复,则使用私有泛型方法):
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);
}
等