除了
之外,检查数字是否在范围内的最简单方法是什么?if (Enumerable.Range(1,100).Contains(number))
//true
if (x >= 1 && x <= 100)
//true
这些方式?什么可能更有效?
答案 0 :(得分:6)
没有比第二种选择更有效的了。你可以写一个扩展名:
public static class NumberExtensions
{
public static bool IsWithinRange<T>(this T number, T rangeStart, T rangeEnd) where T : IComparable<T>
{
return number.CompareTo(rangeStart) >= 0 && number.CompareTo(rangeEnd) <= 0;
}
}
现在代码可读且高效:
if (x.IsWithinRange(1, 100))
{
}
答案 1 :(得分:1)
第一个(LINQ)选项可怕效率低下。第二个选项(只需检查不等运算符)就可以了。在一般情况下,如果您有多个范围,则可以使用新的switch
改进:
switch(number)
{
case var n when n >= 1 && n <= 100:
// ...
break;
case var n when n > 100:
// ...
break;
default:
// ...
break;
}