如果范围(x,y)中的值函数c#

c#是否有一个返回表达式布尔值的函数: if(value.inRange(-1.0,1.0)){}

描述

我建议你使用扩展方法。

扩展方法使您可以向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。

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

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

然后你这样做

 double t = 0.5; bool isInRange = t.InRange(-1.0, 1.0); 

完美主义者的更新

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

我可能会按照先前评论中的建议使用IsInOpenInterval。 但我不确定没有数学背景的程序员是否会理解这个术语。

您也可以将函数命名为IsInOpenInterval

更多信息

  • MSDN - 扩展方法(C#编程指南)
  • MSDN - IComparable接口

例如,使用Math.Abs(value) <= 1.0

不是很清楚,但可能是相反的:

Enumerable. Range(-1, 2).Any(x=>x==value) Enumerable. Range(-1, 2).Any(x=>x==value)

顺便说一句,没有编译,从移动写。

编辑

我在使用Enumerable.Range

EDIT1

如果我们谈论floating point ,那么创建一个extension method就足够了,它通过指定start numberoffset step以及在生成的集合上执行Any之后生成数字序列,就像在aswer中提供的那样。