C#使用Enumerable.Range()

时间:2010-12-15 16:05:31

标签: c# enumerable

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

 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吗?

3 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:10)

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

答案 2 :(得分:1)

这将导致检查每个值,并且有点混乱,为什么不这样做:

int myVal = 37;
if (myVal >= 0 && myVal <= 10)
    // Do something
else if (myVal <= 33)
    // Do somethiong else