C # Использование Enumerable.Range () - PullRequest
0 голосов
/ 15 декабря 2010

Я использую это правильно?Насколько я понимаю, следующая проверка должна быть ложной:

 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 ]

17 голосов
/ 15 декабря 2010

Подпись для Enumerable.Range дает подсказку:

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

Первый параметр называется start ; вторая называется count . Таким образом, ваш второй вызов возвращает 33 значения, начиная с 11, что будет включать 37.

10 голосов
/ 15 декабря 2010

Если это конкретный пример, неэффективно создавать перечисление таким способом, просто чтобы проверить, что значение находится в определенном диапазоне.if (x < y), вероятно, лучше.

1 голос
/ 15 декабря 2010

Это приведет к проверке каждого значения и немного сбивает с толку, почему бы не сделать:

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