Возврат объекта List из метода
Как правильно возвращать объект List из метода? Если просто сделать List выходным параметром, не получится ли операция слишком тяжелой за счет копирования значений локальной переменной метода наружу?
![]()
Если вы генерируете список внутри некоего метода, то best practices предлагают делать так:
Т.е. вы сначала не инициализируете ваш Dictionary нуллом или пустым словарем, т.е. избавляетесь от лишних проверок или переприсваивания.
А вот если вам нужно изменить уже имеющийся словаре someDict, как он указан в моём примере, то имеет смысл передавать его по ссылке в метод. Подробнее почитать можно тут: Передача аргумента по ссылке — ref
Лист хранит в себе ссылки на объекты, а не сами объекты. Поэтому каким бы большим у вас лист ни был, копирования локальных переменных «наружу», т.е. создание новых экземпляров-копий не произойдёт, и о производительности в данном случае беспокоиться не стоит.
Если всё же сомневаетесь, попробуйте инициализировать новый лист до вызова вашего метода и передавать его туда в качестве аргумента, а заполнять его уже в методе. При этом возвращать его не обязательно (метод может ничего не возвращать). По завершении метода у вас будет заполненный вашими данными лист.
Как вернуть list из метода в c
Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите восстановить пароль
| Поиск по форуму |
| Расширенный поиск |
| К странице. |

Такая задача. Есть база данных MySQL. Нужно из неё вывести несколько значений которые соответствуют запросу. Это может быть от 1го до n.
Потом это нужно обработать дальше. Как лучше сделать я не знаю.
Есть идея создать список (List) из массива стринг (string[]) c различными полями. При вызове функции передать этот список и заполнить его данными из ДБ. Но вот не знаю как вернуть его назад?
такое не прокатывает
Есть таблица с данными (Координаты GPS).
Нужно выбрать из таблицы те данные которые не получилось отослать дальше, и попробовать их переслать дальше. В зависимости от результата сделать update на таблицу.
Хотел вывести это через функцию в классе, но не знаю как вывести из функции список (List) с данными для дальнейшей обработки.
Возврат двух списков в C#
Я изучал это некоторое время, и все еще не уверен, как реализовать и каков наилучший способ вернуть два списка из отдельного метода?
Я знаю, что есть аналогичный вопрос, плавающий вокруг, но они, кажется, противоречат друг другу о том, какой лучший способ сделать это. Мне просто нужно простое и эффективное решение моей проблемы. Спасибо заранее.
6 ответов
есть много способов.
возврат коллекции списков. Это не хороший способ сделать это, если вы не знаете размер списков или, если это более 2-3 листов.
создайте объект со свойствами для списка и верните его:
возвращает кортеж из двух списков — особенно удобно при работе с В C# 7.0 кортежей
кортежи до C# 7.0:
Я бы пошел на опции 2 или 3 в зависимости от стиля кодирования и где этот код подходит в большей области. Перед C# 7.0 я бы, вероятно, рекомендовал вариант 2.
создайте класс, который имеет 2 реквизита list1, list 2, верните этот класс или просто верните массив списков
и, наконец, на C# 7 Вы можете просто сделать
Если вы используете более позднюю версию .NET и C#, просто используйте кортежи (вам может потребоваться установить-Package «System.ValueTuple»)
вы можете посмотреть на структурирование вашего возвращения в Двумерный Массив. По сути, это список списков и может быть представлена в виде графа, где каждая координата содержит значение.
вот пример создания двумерного массива, добавления значения в точку [0,2], а затем получения его значения из этой точки и записи его на экран:
вы должны передать оба желаемых списка в качестве ссылки на вызывающую функцию. Например
лучшая практика IMO будет передавать два списка в ваш желаемый метод и инициализировать / назначать их из самого метода. Пример: