约束获胜的某些类型的数的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种类型和当约束有帮助时。像这样的案例让我很头疼…

约束获胜的某些类型的数的C#泛型';不起作用

这不是泛型的用途。

我建议您将此方法拆分为两个方法RandomNumberInt32和RandomNumber Double。

然而,有一种方法可以做到这一点:

return (T)(object)RandomNumberLong(min, max);

但它的性能很糟糕,而且与直觉相悖。我更喜欢专门的方法。

我不明白为什么这个问题被否决了。