предположим у меня есть«выход» перечислений, которые не получают «готовой» по вызывающему - то, что происходит
IEnumerable<string> Foo()
{
try
{
/// open a network connection, start reading packets
while(moredata)
{
yield return packet;
}
}
finally
{
// close connection
}
}
(Или, может быть, я сделал «используя» - то же самое). Что произойдет, если мой абонент отправится
var packet = Foo().First();
Я просто остался с просочившимся соединением. Когда наконец вызывается? Или же правильно всегда происходит по волшебству
редактировать с ответом и мыслями
Моим образцом и другим «нормальным» (Еогеаспом, ..) вызовом моделей будут работать хорошо, потому что они распоряжаются в IEnumerable (на самом деле IEnumerator, возвращаемый GetEnumerator). Поэтому я должен иметь вызывающего абонента, который делает что-то напуганное (явно получая перечислитель, а не удаляя его или тому подобное). Я буду иметь их расстреляли
плохого кода
Я нашел вызывающий делает
IEnumerator<T> enumerator = foo().GetEnumerator();
изменен
using(IEnumerator<T> enumerator = foo().GetEnumerator())
Мое лучшее предположение: возвращает только первый «пакет» (?) –
@MaciejLos Это не отвечает на вопрос, который он задал. – Servy
@ Серви, я знаю. Вот почему я опубликовал комментарий. Как вы можете видеть, я добавил '?' В конце инструкции, потому что я не уверен. Спасибо за ваш комментарий. –