C# с использованием enumerable.range ()
-
10-10-2019 - |
Вопрос
Я использую это правильная манера? Насколько я понимаю, следующая проверка должна быть ложной:
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