Вопрос

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

 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 Таким образом?

Это было полезно?

Решение

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

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

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

Другие советы

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

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

int myVal = 37;
if (myVal >= 0 && myVal <= 10)
    // Do something
else if (myVal <= 33)
    // Do somethiong else
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top