@ 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
}
или это:
int x = 10;
foreach (int i in x.ToEnumerable())
{
Debug.WriteLine(i); //Will print value of i to output window
}
или это:
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
}
У меня недавно был случай, как пример начала/конца выше, где мне пришлось «извлекать» последовательные значения из последовательности (используя «Пропустить и принять»), а затем добавлять и добавлять начальные и конечные значения. Начальные и конечные значения были интерполированы между последним не извлеченным значением и первым извлеченным значением (для начала) и между последним извлеченным значением и первым неисчерпаемым значением (для конца). Затем полученную последовательность затем снова включали, возможно, реверсивный.
Таким образом, если исходная последовательность выглядела как:
я мог бы извлечь 3 и 4 и добавить интерполированных значений между 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 операций. Не уверен, что это действительно «хорошие» идеи или нет, но они должны выполнить свою работу.
Ницца. Сегодня я чему-то научился! – spender
+1. Не знал о Enumerable.Empty – AlwaysAProgrammer
Это именно то, что я искал! – avance70