@ avance70.Не совсем ответ на оригинальный вопрос, но ответ на вопрос avance70 о IEnumerable с одним целочисленным значением.Добавил бы это как комментарий, но у меня недостаточно представителя, чтобы добавить комментарий.Если вас интересует строго неизменяемая последовательность, у вас есть несколько вариантов:
Общий метод расширения:
public static IEnumerable<T> ToEnumerable<T>(this T item)
{
yield return item;
}
Используйте вот так:
foreach (int i in 10.ToEnumerable())
{
Debug.WriteLine(i); //Will print "10" to output window
}
илиthis:
int x = 10;
foreach (int i in x.ToEnumerable())
{
Debug.WriteLine(i); //Will print value of i to output window
}
или this:
int start = 0;
int end = 100;
IEnumerable<int> seq = GetRandomNumbersBetweenOneAndNinetyNineInclusive();
foreach (int i in start.ToEnumerable().Concat(seq).Concat(end.ToEnumerable()))
{
//Do something with the random numbers, bookended by 0 and 100
}
Недавно у меня был случай, подобный приведенному выше примеру начала / конца, где мне приходилось «извлекать» последовательные значения из последовательности (используя Skipи возьмите), а затем добавьте и добавьте начальные и конечные значения.Начальное и конечное значения были интерполированы между последним не извлеченным значением и первым извлеченным значением (для начала) и между последним извлеченным значением и первым не извлеченным значением (для конца).Затем полученную последовательность снова оперировали, возможно, в обратном порядке.
Итак, если исходная последовательность выглядела следующим образом:
1 2 3 4 5
Возможно, мне придется извлечь 34 и добавьте интерполированные значения от 2 до 3 и от 4 до 5:
2,5 3 4 4,5
Enumerable.Repeat.Используйте вот так:
foreach (int i in Enumerable.Repeat(10,1)) //Repeat "10" 1 time.
{
DoSomethingWithIt(i);
}
Конечно, поскольку это IEnumerables, их также можно использовать вместе с другими операциями IEnumerable.Не уверен, действительно ли это «хорошие» идеи или нет, но они должны выполнить свою работу.