将可为空的 T 传递给方法
本文关键字:方法 | 更新日期: 2024-11-07 10:33:15
>我有以下内容:
public void AddVariable<T>(String name, T value) where T : struct {
}
此方法接受以下内容:
AddVariable("Price", 2387);
但不接受
AddVariable("Name", "A name");
我希望 T 只是基本类型,如 int、字符串、布尔值......这就是我使用结构的原因。但我认为我需要它为空才能接受字符串。
如何将方法设置为接受可为 null 的基本类型?
有没有更好的方法可以做到这一点?
没有这样的约束。 string
和 int
之间唯一常见的基类型是对象、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);
}
等。