C#是否具有返回表达式的 bool 值的函数:if(value.inRange(-1.0,1.0)){}

最佳答案

描述

我建议您使用扩展方法。



您可以以通用方式创建此扩展方法(建议使用digEmAll和CodeInChaos)。然后,您可以在实现IComparable的每个对象上使用它。

解决方案

public static class IComparableExtension
{
    public static bool InRange<T>(this T value, T from, T to) where T : IComparable<T>
    {
        return value.CompareTo(from) >= 1 && value.CompareTo(to) <= -1;
    }
}

那你做这个
double t = 0.5;
bool isInRange = t.InRange(-1.0, 1.0);

完美主义者的更新

经过与@CodeInChaos的广泛讨论后,他说



您也可以将函数命名为IsInOpenInterval

更多信息
  • MSDN - Extension Methods (C# Programming Guide)
  • MSDN - IComparable Interface
  • 10-05 22:16