powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
25 сообщений из 47, страница 1 из 2
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808383
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня!
нарисовал класс:
public class Req_shipment
{
public class Req_Item
{
public int itemIndex;
public string offerId;
};
public int shipmentId;
public List<Req_Item> items;
};

Создал переменную (req_item) и список таких же элементов (req_items) :
Код: c#
1.
2.
            var req_item = new Req_shipment.Req_Item() ;
            List<Req_shipment.Req_Item> req_items; req_items = new List<Req_shipment.Req_Item>(); 



Делаю запрос к бд, получаю рекордсет.
Последовательно читаю записи во временную переменную. И из неё пытаюсь наращивать список:
Код: c#
1.
2.
3.
4.
5.
6.
7.
                while (sqlResult.Read())
                { i++;
                   req_item.itemIndex = Convert.ToInt32(sqlResult.GetString(2)); req_item.offerId = sqlResult.GetString(3); // Всосали очередную запись 
                   Console.WriteLine($"req_item.itemIndex = {req_item.itemIndex} \t req_item.offerId = {req_item.offerId} "); // Глянули что считали
                   req_items.Add(req_item); // Добавили новую строку в список
                }
 



На выходе имею список req_items, где все строки идентичны (идентичны последнему считанному значению в элементы req_item.

Как сделать так что бы список наполнялся уникальными строками? Если обойтись без req_item то как?

Это,.... Читал про статистические и ссылочные типы. Не понял.


--------------------------
No ROM Basic...
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808388
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на шизофазию, все в кучу, переходы из одной темы в другую, при этом ничего не понятно.
При чем тут значимые и ссылочные типы?
Оформите сообщение нормально и продумайте свой вопрос, опишите, что у вас не получается, пока я вижу, что вы знаете какие то термины, но не понимаете, что они обозначают.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808392
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
...
while (sqlResult.Read())
...



покажите как вы получаете из БД результат и какого он типа
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808393
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарисуй для начала класс нормально. В смысле здесь. Неужто ты думаешь кто-то будет разбирать твой неформатированный текст. И оформи вообще код по-человечески - глазам ведь больно.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808396
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтоб строки не повторялись используйте не List<T>, а HashSet<T>, а еще лучше сделайте запрос в базе, пусть она сама фильтрует записи повторяющиеся
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808397
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: c#
1.
2.
3.
...
while (sqlResult.Read())
...



покажите как вы получаете из БД результат и какого он типа

sqlCommand.CommandText = "SELECT ... FROM ... where .... ";
var sqlResult = sqlCommand.ExecuteReader();

все возвращаемые значения - string (так проще, не смотря на необходимость последующего преобразования, например, в int32)
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808400
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,
чем проще то?
натуральное число 12345678 в памяти занимает 4 байта, а строка 16 байт. А это значит, что накладные расходы на передачу и чтение возрастают.
а если взять вещественные числа (double, decimal) ты можно при таком подходе хапнуть таких проблем, что мало и просто не покажется, будите потом локти кусать и переписывать свой г..о код с нуля, так как выглядит он довольно монолитно
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808402
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat Нарисуй для начала класс нормально. В смысле здесь. Неужто ты думаешь кто-то будет разбирать твой неформатированный текст. И оформи вообще код по-человечески - глазам ведь больно.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            public class Req_shipment
            {
                public class Req_Item
                {
                    public int itemIndex;
                    public string offerId;
                };
                public int shipmentId;
                public List<Req_Item> items;
            };



так норм?
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808404
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,
В консоль нормально вывод?
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808407
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesSIMPLicity_,
чем проще то?
натуральное число 12345678 в памяти занимает 4 байта, а строка 16 байт. А это значит, что накладные расходы на передачу и чтение возрастают.
а если взять вещественные числа (double, decimal) ты можно при таком подходе хапнуть таких проблем, что мало и просто не покажется, будите потом локти кусать и переписывать свой г..о код с нуля, так как выглядит он довольно монолитно

В данной ситуации это несущественно.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808408
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_Как сделать так что бы список наполнялся уникальными строками?
При считывании каждой новой строки создавать новый Req_shipment.Req_Item .

А сейчас вы его один раз создали и перетираете ему itemIndex и offerId.
Плюс добавляете его N раз в список.

В итоге у вас элементы списка N раз ссылаются на один и тот же req_item.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808409
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно они у тебя идентичны. Ты ведь туда один и тот же объект пихаешь. Букварь в руки и учи, что такое reference types.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808411
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SIMPLicity_,
В консоль нормально вывод?
Консоль показывает ТЕКУЩЕЕ состояние переменной.
Проблема в том, что каждый элемент списка req_items ссылается (ссылается!) на переменную req_item.
То есть все элементы списка req_items это всего лишь отсылки к переменной req_item
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808412
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,

Код: c#
1.
2.
3.
4.
5.
6.
var req_items = new List<Req_shipment.Req_Item>();

while (sqlResult.Read())
{
    req_items.Add(new Req_shipment.Req_Item { itemIndex = sqlResult.GetString(2), offerId = sqlResult.GetString(3) });
}
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808413
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,
У тебя реально работает только List<Req_Item>
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808415
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatКонечно они у тебя идентичны. Ты ведь туда один и тот же объект пихаешь. Букварь в руки и учи, что такое reference types.
Об этом и был вопрос! Как это исправить?
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808418
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_Petro123SIMPLicity_,
В консоль нормально вывод?
Консоль показывает ТЕКУЩЕЕ состояние переменной.
Проблема в том, что каждый элемент списка req_items ссылается (ссылается!) на переменную req_item.
То есть все элементы списка req_items это всего лишь отсылки к переменной req_item

Если вы хотите, чтобы элементы списка ссылались на разные объекты, то надо бы создать эти самые разные объекты.
Они сами по себе не появятся, логично?
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808419
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_Консоль показывает ТЕКУЩЕЕ состояние переменной.a я это и спрашиваю. Чтобы базу исключить. Нафига тут бд вообще?
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808421
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_fkthatКонечно они у тебя идентичны. Ты ведь туда один и тот же объект пихаешь. Букварь в руки и учи, что такое reference types.
Об этом и был вопрос! Как это исправить?

Выше смотри: 21875709 .
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808422
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_fkthatКонечно они у тебя идентичны. Ты ведь туда один и тот же объект пихаешь. Букварь в руки и учи, что такое reference types.
Об этом и был вопрос! Как это исправить?
Написали выше - создавать каждый раз новый объект, заполнять его данными, и его уже добавлять в список. Тогда все объекты в списке будут разные и каждый со своими данными.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808424
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANASIMPLicity_,

Код: c#
1.
2.
3.
4.
5.
6.
var req_items = new List<Req_shipment.Req_Item>();

while (sqlResult.Read())
{
    req_items.Add(new Req_shipment.Req_Item { itemIndex = sqlResult.GetString(2), offerId = sqlResult.GetString(3) });
}



Супер! Спасибо огромное! После доработки и докрутки заработало на раз.

PS Остальные - просто напыщенные снобы...

Тему можно закрывать.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808426
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_PS Остальные - просто напыщенные снобы... мы в шоке от твоего Г. кода. Приходи еще).
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808432
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_skyANASIMPLicity_,

Код: c#
1.
2.
3.
4.
5.
6.
var req_items = new List<Req_shipment.Req_Item>();

while (sqlResult.Read())
{
    req_items.Add(new Req_shipment.Req_Item { itemIndex = sqlResult.GetString(2), offerId = sqlResult.GetString(3) });
}



Супер! Спасибо огромное! После доработки и докрутки заработало на раз.

PS Остальные - просто напыщенные снобы...

Тему можно закрывать.

PS Всё равно ни хрена не понял. Я полагал что <list>.Add(<smthng>) будет сначала создавать новый элемент списка list и наполнять его (свежесозданный элемент) из переменной smthng. Но, похоже, он просто докидывал в list ссылку на smthng ... Ещё раз - Спасибо! А вот на metanit найти разъяснения, увы, так и не смог...
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808433
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SIMPLicity_PS Остальные - просто напыщенные снобы... мы в шоке от твоего Г. кода. Приходи еще).
Да, от закрытия ПТ скуль много потерял.
...
Рейтинг: 0 / 0
есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
    #39808443
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_Всё равно ни хрена не понял. Я полагал что <list>.Add(<smthng>) будет сначала создавать новый элемент списка list и наполнять его (свежесозданный элемент) из переменной smthng.
Почему-то новички всё время выдумывают поведение, вместо того, чтобы читать книги и документацию.

В последней чёрным по белому написано, что метод тупо добавляет элемент в конец списка.
...
Рейтинг: 0 / 0
25 сообщений из 47, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / есть список в списке. Наполняется одинаковыми значениями. Как уйти от ссылок к значениям?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]