0

我使用这是正确的方式吗?据我了解,以下检查应该是错误的:

 int myVal = 37;
 if (Enumerable.Range(0, 10).Contains(myVal))
    // Do something
 else if (Enumerable.Range(11, 33).Contains(myVal))
    // Do somethiong else

但我似乎遇到了一些//Do somethiong else被执行的情况。我可以不使用Enumerable.Range这种方式吗?

4

3 回答 3

18

的签名Enumerable.Range提供了一个线索:

public static IEnumerable<int> Range(
    int start,
    int count
)

第一个参数称为start;第二个称为count。因此,您的第二个调用返回 33 个以 11 开头的值,其中包括 37。

于 2010-12-15T16:07:30.417 回答
10

如果这个特定示例,以这种方式创建枚举只是为了检查一个值是否在特定范围内,效率低下。if (x < y)可能更好。

于 2010-12-15T16:08:31.847 回答
1

它将导致每个值都被检查,并且有点令人困惑,为什么不这样做:

int myVal = 37;
if (myVal >= 0 && myVal <= 10)
    // Do something
else if (myVal <= 33)
    // Do somethiong else
于 2010-12-15T16:09:55.217 回答