C#使用Enumerable.Range()

Pau*_*els 0 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
Run Code Online (Sandbox Code Playgroud)

但我似乎得到了一些//Do somethiong else执行的案例.我不能用Enumerable.Range这种方式吗?

Dan*_*Tao 17

签名Enumerable.Range提供了线索:

public static IEnumerable<int> Range(
    int start,
    int count
)
Run Code Online (Sandbox Code Playgroud)

第一个参数叫做start ; 第二个叫做计数.所以你的第二个调用是从11开始返回33个值,其中包括37个.

  • @Chad:对; 我的观点是,在你的系统中,你必须*决定*哪些是有效的,因为你不能同时拥有两者. (2认同)

Mat*_*ott 10

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

  • O(n)vs O(1),brrr. (2认同)