Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Возврат элементов другой последовательности

21.10.2018, 12:08. Показов 1469. Ответов 15

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
function f: sequence of real;
begin
  yield sequence Seq(1,2,3);
  yield 4;
end;
 
begin
  f.Println;
end.
Аналог yield sequence из PascalABC.Net есть в C#?

Из справки:
В отличие от оператора yield, оператор yield sequence перебирает элементы последовательности, указанной в выражении и возвращает эти элементы в качестве значений основной функции-итератора.
Требуется что-то вроде:
C#
1
2
3
4
5
public IEnumerable<int> M()
{
    yield return new List<int>() {1, 2, 3};
    yield return 4;
}
На выходе чтобы было: 1, 2, 3, 4.
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2018, 12:08
Ответы с готовыми решениями:

Возврат строки из элементов массива
Доброго времени суток! Например, я могу вывести массив вот таким методом: static public void Print(ClassA arr) { ...

Получение из одной последовательности другой вычеркиванием элементов
Подскажите, пожалуйста в решении задач. Я еще не очень хорошо знаю строки. 1. Даны две последовательности символов. Пробел также является...

Возврат к родительской форме из любой другой
Добрый день! Необходимо из второй и третей формы вернуться к первой. Облазил уже весь интернет, все найденные решения не сработали....

15
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
21.10.2018, 12:11
Мне на ум приходит только ручной перебор по вложенной коллекции:
C#
1
2
3
4
5
6
7
8
static IEnumerable<int> GetSeq()
        {
            foreach (int item in Enumerable.Range(1,3))
            {
                yield return item;
            }
            yield return 4;
        }
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
21.10.2018, 14:11
http://pascalabc.net/downloads... uences.pdf
• Оператор yield sequence позволяет вернуть подпоследовательность в функции-генераторе последовательностей
• Оператор yield sequence по существу заменяется на цикл foreach по внутренней последовательности с возвратом всех значений с помощью yield
Да.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,427
21.10.2018, 14:25
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Toros1992, а мне приходит на ум более краткий вариант:

C#
1
2
3
4
        static IEnumerable<int> GetSeq()
        {
            return Enumerable.Range(1,3).Concat(new []{4});
        }
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
21.10.2018, 14:29
Usaga, автор скорее всего в рамках этого тему поднимал.
В подобном случае можно сделать по вашему?
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
21.10.2018, 14:31  [ТС]
Toros1992, да, в рамках этого вопроса.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,427
21.10.2018, 14:36
Toros1992, ага. Ценой создания одного маленького массивчика можно сократить код и повысить читабельность.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
21.10.2018, 14:38
Usaga, но разве при большом объеме узлов не будет лишнего расхода памяти? Просто по поводу читаемости, на мой взгляд, yield даже лучше читается.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,427
21.10.2018, 14:52
Toros1992, расход памяти на что?
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
21.10.2018, 14:54
На создание маленьких массивчиков, как вы предложили
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,427
21.10.2018, 14:57
Toros1992, массивчик я создал для добавления 4 в конец последовательности. Если на руках N последовательностей, то их можно "склеить" через Concat. Такое "склеивание" не предполагает копирование данных. Будет создано N итераторов по количеству вызовов Concat, которые будут последовательно перебирать полученные коллекции. Память будет выделяться только под эти самые итераторы. Т.е. копейки.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
21.10.2018, 15:51
Цитата Сообщение от Usaga Посмотреть сообщение
то их можно "склеить" через Concat.
разве это не нарушит ленивость линка?
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,427
21.10.2018, 15:53
КОП, что? Поясните.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
21.10.2018, 16:09
Цитата Сообщение от Usaga Посмотреть сообщение
что? Поясните.
в случае с листом это не принципиально, но если допустим это последовательно читаются данные откуда-нибудь, тогда IEnumerable не вернет все сразу а может перед каждой итерацией foreach считывать новую порцию данных.
Соответственно если мы читаем из IEnumerable в 1000 записей, но на первой сделаем break из цикла, то в случае с concat прочтутся все сразу, а с foreach только одна.

Разумеется могу ошибаться, не тестил
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,427
21.10.2018, 16:22
Цитата Сообщение от КОП Посмотреть сообщение
то в случае с concat прочтутся все сразу, а с foreach только одна.
Как я чуть раньше говорил: никакого копирования не происходит, только создаётся новый итератор. Не будет обращения к итератору, не будет и чтения. Принципы LINQ тут никак не нарушаются вообще ничем.
1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
21.10.2018, 16:24
Цитата Сообщение от Usaga Посмотреть сообщение
Как я чуть раньше говорил:
между глаз попало, все верно говорите)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2018, 16:24
Помогаю со студенческими работами здесь

В последовательности найти числа, которые близки к числам другой последовательности
даны две последовательности чисел A = {a1, a2,…, an}, B = {b1, b2, …, bn},напечатать те и только те числа aj из последовательности A, для...

Массив: В последовательности из N целых чисел найти количество различных элементов, больших среднеарифметического всех элементов последовательности.
Помогите пожалуйста написать программу! В последовательности из N целых чисел найти количество различных элементов, больших...

Вычислить сумму тех элементов последовательности, номера которых совпадают со значениями элементов последовательности
Пожалуйста, помогите! Нифига не шарю в программировании. Тут такая задачка: &quot;Дана последовательность из n вещественных чисел. Вычислить...

Поиск максимальной последовательности в другой последовательности
Доброго времени суток. Решая эту задачу, наткнулся на небольшую проблему... Не знаю, как точно описать ее в двух словах, поэтому покажу...

Как перейти на код другой запускаемой программы и возврат из неё в первичную для пошагового просмотра?
- &quot;Turbo Debugger v5.0&quot; - Запуск программы в отладчике, которая запускает другую программу. - Как перейти на код другой запускаемой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru