检查数字是否在范围内的最快方法

时间:2018-05-24 15:24:07

标签: c#

除了

之外,检查数字是否在范围内的最简单方法是什么?
if (Enumerable.Range(1,100).Contains(number))
//true

if (x >= 1 && x <= 100)
//true
这些方式?什么可能更有效?

2 个答案:

答案 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;
    }