Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 27.12.2014
Сообщений: 298

Передача параметра по ссылке

18.09.2021, 15:10. Показов 1009. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне необходимо передать параметр в процедуру по ссылке и поменять значение этого параметра внутри функции. Если я передам без out/ref, тогда у меня не произойдет изменения внутри процедуры. а мне нужно, чтобы мой List дополнялся
Можете подсказать, как правильно сделать?
C#
1
2
3
4
5
6
public static void cryptUpdateListClassGetData(out List<classData>[] lclassDataArray, string strAssetTo, string strTimeFrame, List<structAssetName> listAssets)
        {
            int iListAssetsCount = listAssets.Count;
            // iListAssetsCount = 2;
            Parallel.For(0, iListAssetsCount, CommonClass._p_options, index => parallelCryptoUpdateListClassArrayDataAsset(out lclassDataArray, strAssetTo, strTimeFrame, listAssets, index));
        }

Вот такой код дает ошибку CS0177 До передачи управления из текущего метода параметру, помеченному ключевым словом out, "lclassDataArray" должно быть присвоено значение
Как тогда мне передачу сделать?

Добавлено через 1 минуту
ref тоже я не могу использовать Недопустимо использовать параметр "lclassDataArray" с модификаторами ref, out или in внутри анонимного метода, лямбда-выражения, выражения запроса или локальной функции
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2021, 15:10
Ответы с готовыми решениями:

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

Передача по ссылке
Здравствуйте, уважаемые участники форума :) Прошу вашей помощи. В теле некоего метода я объявляю объект и передаю его по ссылке в...

Передача экземпляров класса по ссылке
Добрый день у меня по задание требуется, чтобы методу PutMark передавался объект ( экземпляр класса) по ссылке. Но насколько я понял , то...

6
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
18.09.2021, 15:22
Цитата Сообщение от Dimarik__1 Посмотреть сообщение
мне нужно, чтобы мой List дополнялся
List и так ссылочный тип...
0
 Аватар для esperanto_qun
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
18.09.2021, 15:37
При работе с списком, его не надо возвращать, он передает по ссылке, посмотритет пример:

C#
1
2
3
4
5
6
7
8
9
10
static void Main()
        {
            List<int> array = new List<int> { 1, 2, 3, 4, 5 };
            Method(array);
            Console.WriteLine(string.Join(" ",array));
        }
        static void Method(List<int> array)
        {
            array.AddRange(new int[] { 6, 7, 8 });
        }
Если хотите что бы ваш код заработал с вашим подходом, добавьте в начале метода строку:

C#
1
lclassDataArray = default;
0
0 / 0 / 1
Регистрация: 27.12.2014
Сообщений: 298
18.09.2021, 16:19  [ТС]
интересно. Почему-то если и так должно все работать, что должно по ссылке передаваться, а не по значению, пока я не использовал out, у меня ничего вне этого метода не инициализировалось
C#
1
2
3
4
5
6
7
8
9
 public void InitializeListClassData(out List<classData>[] lclassDataArray, int iCount)
        {
            lclassDataArray = new List<classData>[iCount];
           
            for (int i = 0; i < iCount; i++)
            {
                lclassDataArray[i] = new List<classData>();
            }
        }
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
18.09.2021, 16:34
А зачем Вам массив листов?))
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
18.09.2021, 17:16
Цитата Сообщение от Dimarik__1 Посмотреть сообщение
интересно
Не менее интересно почему в первом сообщении вы привели код, в котором параметр никак не изменяется, а сейчас привели совсем другой код, в котором параметр изменяется.
Товарищи, которые вам отвечали, должны были как-то догадаться?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
18.09.2021, 17:18
Передавайте заранее созданный/инициализированный список и всё будет работать.

C#
1
2
3
4
5
6
7
8
9
10
public List<classData>[] InitializeListClassData(int iCount)
        {
            var lclassDataArray = new List<classData>[iCount];
           
            for (int i = 0; i < iCount; i++)
            {
                lclassDataArray[i] = new List<classData>();
            }
            return lclassDataArray;
        }
C#
1
2
List<classData>[] lclassDataArray = InitializeListClassData(xxx);
// передаем переменную куда-то для дальнейшего использования...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2021, 17:18
Помогаю со студенческими работами здесь

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

Передача объектов методам по ссылке
Здравствуйте! Читаю Шилдта C# и дошел до главы Передача объектов методам по ссылке. Прошу объяснить по-проще, что, откуда и зачем. ...

С - > C# Передача значений по ссылке и значению
Есть Си функция: double lagrange(double X, double *Xi, double *Yi, int n) //Аппроксимация многочленом Лагранжа. { int i, k; ...

Передача объектов методам по ссылке
Здравствуйте. не могу разобраться с этим примером из книги Шилдта.using System; class MyClass { int alpha, beta; public...

Передача элемента массива по ссылке
В метод swap пытаюсь передать 2 элемента массива по ссылке, но компилятор пишет, что индексатор не может передаваться как ссылка. Как можно...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru