我有这样的方法:
private static double ComputePercentage(ushort level, ushort capacity)
{
double percentage;
if(capacity == 1)
percentage = 1;
// do calculations...
return percentage;
}
是否可以使它成为像“type T”这样的泛型类型,它可以返回十进制或双精度,具体取决于预期方法的类型(或放入函数的类型?)
我尝试过这样的事情,但我无法让它工作,因为我无法将像“1”这样的数字分配给泛型类型。之后我也尝试使用“where T :”,ushort capacity)
但我仍然无法弄清楚。
private static T ComputePercentage<T>(ushort level, ushort capacity)
{
T percentage;
if(capacity == 1)
percentage = 1; // error here
// do calculations...
return percentage;
}
这甚至可能吗?我不确定,但我认为这篇文章可能表明我正在尝试做的事情是完全不可能的。
编辑
感谢所有回复的人,很多很好的答案。正如Tomas所指出的,这可能最好通过两种不同的方法来完成。正如TreDubZedd和TcKs所指出的,获得我想要的功能的最佳方法是使用可以隐式返回双精度或小数的隐式转换。