约束获胜的某些类型的数的C#泛型';不起作用
本文关键字:泛型 不起作用 获胜 类型 约束 | 更新日期: 2023-09-27 18:21:21
我经常使用泛型,但狭义的情况对我有挑战…
public static T RandomNumberImproved <T>(int min, int max)
{
bool bolLegit=false;
if (typeof(T) == typeof(int))
{
bolLegit=true;
return (T) RandomNumberLong(min, max);
}
if (typeof(T) == typeof(double))
{
bolLegit=true;
return (T) RandomNumberDouble(min, max);
}
if(!bolLegit) throw new Exception("Unsupported Number Format");
}// end RandomNumberImproved
当然我得到错误不能转换为返回类型t。
当我可以支持n种类型和当约束有帮助时。像这样的案例让我很头疼…
这不是泛型的用途。
我建议您将此方法拆分为两个方法RandomNumberInt32和RandomNumber Double。
然而,有一种方法可以做到这一点:
return (T)(object)RandomNumberLong(min, max);
但它的性能很糟糕,而且与直觉相悖。我更喜欢专门的方法。
我不明白为什么这个问题被否决了。