170 похожих чатов

Кто то может мне обяснить что такое possible multiple Enumeration.

Погуглил но че то не понимаю. Это ложное предупреждение или нет ?

17 ответов

78 просмотров

ienumerable вообще не комильфо проматывать несколько раз, это интерфейс предназначенный для однократной промотки. Некоторые реализации контейнеров могут позволить промотать несколько раз, но другие позволят лишь раз, а на второй промотке не вернут ничего. Поэтому это предупреждение стоит принять во внимание и, если тебе прямо нужно пробегать несколько раз, переведи ienumerable в тот же list

enumerable может подтягиваться из сети например, и если ты два раза по нему пройдешься, то ты два раза вытянешь данные из сети

Dmitry B.
ienumerable вообще не комильфо проматывать несколь...

ну вообще нет) метод Reset не просто так придумали и невозможность повторной энумерации скорее исключение

Hesu- Автор вопроса
Dmitry B.
ienumerable вообще не комильфо проматывать несколь...

Если моя коллекция будет всегда локальной и мне все ровно надо будет 2 раза перечислять их методами например Any и Count то выходит что предупреждение ложное ?

Hesu
Если моя коллекция будет всегда локальной и мне вс...

Лучше заменить IEnumerable на более подходящий тип

Hesu
Если моя коллекция будет всегда локальной и мне вс...

сейчас у тебя будет работать, но в будущем в ходе развития кода реализация коллекции может запросто измениться, что приведёт к баге. Это плохая практика - полагаться на конкретную реализацию, лучше сразу обезопаситься переводом в список/массив/IReadonlyCollection

Hesu- Автор вопроса
Dmitry B.
сейчас у тебя будет работать, но в будущем в ходе ...

Понимаю но меня беспокоит именно тот вопрос. Что если к локальной колекции будет выполнятся запрос например Last() или .Where() Все ровно оно будет перечислятся вверно ? Тогда выходит что предупреждение ложное ?

Hesu- Автор вопроса
Hesu
Понимаю но меня беспокоит именно тот вопрос. Что е...

Предупреждение не ложное, он ж корректно тебя предупреждает что сюда может прийти одноразовый ienumerable и все сломается. Если ты не будешь вызывать функцию с таким аргументом, то все норм, го предупреждение все равно остаётся корректным

Hesu- Автор вопроса
Hesu
что значит одноразовый IEnumerable ?

Который можно проитерировать только один раз

Hesu- Автор вопроса
Hesu
пример можно ?

Такой пример сложно придумать Но можно придумать пример, который будет очень долго итерироваться: IEnumerable<int> GetFriendsIdsFromVk(){ return vkClient.GetFriends().Select(f => f.Id); }

Сергей
ну вообще нет) метод Reset не просто так придумали...

Да нет, вообще-то именно просто так придумали. Вот что говорит документация: > The Reset method is provided for COM interoperability. It does not necessarily need to be implemented Я не знаю нормальных сценариев, в которых этот метод используется.

Hesu
Если моя коллекция будет всегда локальной и мне вс...

Тогда лучше напиши нормальный код поверх своей коллекции, не пользуясь LINQ. Быстрее будет работать.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта