我想知道返回泛型的方法是否可以返回int或bool或任何其他数据类型。例如:
private static T GetDefaultValue<T>(SettingType s)
{
switch(s)
{
case s.IntValue:
return 0;
case s.BoolValue:
return false;
case s.DateTimeValue:
return DateTime.MinValue;
}
return 0;
}
可以进一步使用:
...
int x = GetDefaultValue<int>(s.IntValue)
...
我知道这可以通过使用对象作为返回类型或使用重载来实现,但是如果它也可以与泛型一起使用就会徘徊。
答案 0 :(得分:2)
它可以,但你必须与编译器对抗一点,你需要通过对象转换为此工作
private static T GetDefaultValue<T>(SettingType s)
{
switch(s)
{
case s.IntValue:
return (T)(object)0;
case s.BoolValue:
return (T)(object)false;
case s.DateTimeValue:
return (T)(object)DateTime.MinValue;
}
throw new NotSupportedException("Unsupported type")
}