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

Не работает поиск по коллекции

14.03.2014, 23:02. Показов 1641. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени всем.
Такая история.

Создаю вот такую коллекцию
C#
1
List<int[,]> conects = new  List<int[,]>();
В цикле заполняю коллекцию conects
C#
1
2
3
4
5
6
7
8
9
10
11
12
 
 int[,] msv = new int[1, 2];
 while (flag)
                    {
                              y = GetNode(line)[0, 1];
                           
                            msv[0, 0] = 1;
                            msv[0, 1] = 2;//получается вот такой массив |1||2|
 
conects.Add(msv);// В цикле добавляется в коллекцию массив(много раз)
}
}
Отлично, коллекцию заполнил допустим там 12элементов

Далее сразу после цикла делаю так(поиск)

C#
1
  int   ind = conects.IndexOf(msv);
И в итоге ни чего не находится Хотя в коллекции данный элемент есть!

затем, если сделать вот так
C#
1
conects.Add(msv);//То есть добавляем  в самый конец коллекции - теперь 13 элементов
а потом опять ищем

C#
1
  int   ind = conects.IndexOf(msv);
то он находит
НОООО
Даже если вся коллекция состоит из одинаковых msv - с одинаковыми значениями
то найдется(после добавления 13го элемента) только последний добавленный. А все остальные он просто игнорирует.

Что это? Как это?

 Комментарий модератора 
Избегайте кричащих заголовков и поспешных выводов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2014, 23:02
Ответы с готовыми решениями:

Поиск в коллекции
List&lt;LiveBeings&gt; coll = new List&lt;LiveBeings&gt;(); Horse h = new Horse(); ...

Поиск в коллекции
Здравствуйте, возникла проблема с поиском в коллекции. Выдает ошибку: &quot; Ошибка CS0176 Доступ к...

Поиск в коллекции
Как реализовать поиск в коллекции книги , по условию в абстрактном классе Abstr объявить метод ...

Быстрый поиск по коллекции
Нужно сделать быстрый полнотекстовый поиск (желательно в реальном времени) по полям элементов...

10
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.03.2014, 23:33 2
VnNort, как и любой желтый заголовок, вы написали неверную ересь. Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication30
{
    class Program
    {
        static void Main()
        {
            var conects = new List<int[,]>();
            int[,] arr = {{1, 2}, {3, 4}};
            conects.Add(arr);
            int ind = conects.IndexOf(arr);
            Console.WriteLine(ind);
        }
    }
}
возвращен ожидаемый 0.
0
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 35
14.03.2014, 23:47  [ТС] 3
Обнаружил ещё то что если массив который заполняет коллекцию создать вне юзинга, то в тот момент когда добавляется этот массив в коллекцию, когда трасировка не прошла строку добавления в этот момент все элементы равны этому массиву.

Добавлено через 9 минут
Цитата Сообщение от Psilon Посмотреть сообщение
возвращен ожидаемый 0.
Проблема только в цикле
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.03.2014, 00:08 4
VnNort, потому что массивы сравниваются по ссылке, huh?
0
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 35
15.03.2014, 00:10  [ТС] 5
А вот тут не понял ? что такое huh?
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.03.2014, 00:11 6
что-то вроде смайлика
C#
1
2
3
4
int[] a = {1,2,3};
int[] b = {1,2,3};
bool equals = a == b;
Console.WriteLine(euqals); // false
0
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 35
15.03.2014, 00:19  [ТС] 7
Цитата Сообщение от Psilon Посмотреть сообщение
Console.WriteLine(euqals); // false
Хм, а почему так? и как сделать чтобы было true ?
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.03.2014, 00:46 8
VnNort, ну метод SequenceEquals использовать. Поэтому indexOf вряд ли поможет.
0
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 35
15.03.2014, 02:32  [ТС] 9
Ну почему нельзя было например сделать метод .IndexOf(); который бы сравнивал не по ссылкам, а по значениям. МБ кто то подскажет как переопределить его, чтобы по значениям сравнивал?
0
Петррр
15.03.2014, 02:35
  #10

Не по теме:

Увидев первое слово в заголовке темы, я подумал, что в сети появилось опровержение того, что Кабаева родила Путину сына.

0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.03.2014, 02:37 11
VnNort, потому что используется стандартный метод сравнения, для ссылочных типов - сравнение по ссылке. С опытом понимание приходит.

Как переопределить IndexOf - пишите свой собственный, ну или использовать обычный LINQ: Contains, First, FirstOrDefault.

Не по теме:

Петррр, да бывает, пропадают сеошники на этом форуме.. :(

1
15.03.2014, 02:37
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2014, 02:37
Помогаю со студенческими работами здесь

FindAll поиск элементов по коллекции
Доброго времени суток! подскажите пожалуйста. Есть коллекция, собрать в другую коллекцию элементы,...

Поиск в элементах коллекции List<T>
Как можно реализовать метод для подсчета определенных параметров, которые хранятся внутри элементов...

Поиск в коллекции по свойству объекта
Добрый день, очередной вопрос к Гуру! Проблемка такая, есть список List&lt;T&gt; с объектами какого-то...

Полнотекстовый Поиск В Коллекции
Век живи - век учись! При обращении к коллекции из представления (например, PickListCollection)...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
В чем отличие между INNER JOIN и OUTER JOIN
bytestream 22.01.2025
В современных базах данных информация часто распределена между множеством взаимосвязанных таблиц, что делает операции объединения JOIN неотъемлемой частью работы с SQL. Эти операции позволяют. . .
Как сделать первую букву заглавной в JavaScript
bytestream 22.01.2025
JavaScript предоставляет разработчикам множество инструментов для эффективной работы с текстовыми данными. Одной из часто встречающихся задач при обработке строк является преобразование первой буквы. . .
Что такое Big O нотация и алгоритмическая сложность
bytestream 22.01.2025
Введение в алгоритмическую сложность В мире разработки программного обеспечения эффективность алгоритмов играет crucial роль в создании качественных приложений. Алгоритмическая сложность. . .
Как решать конфликты слияния (merge) в Git
bytestream 22.01.2025
Конфликты слияния в системе контроля версий Git возникают в ситуациях, когда две или более ветки разработки содержат несовместимые изменения в одних и тех же участках кода. Эти конфликты представляют. . .
Как использовать регулярные выражения
bytestream 22.01.2025
Регулярные выражения представляют собой мощный инструмент для работы с текстовыми данными, который позволяет осуществлять поиск, проверку и манипуляцию строками на основе определенных шаблонов. Этот. . .
Как выйти из Vim
bytestream 22.01.2025
Vim (Vi IMproved) представляет собой один из самых влиятельных текстовых редакторов в истории компьютерной индустрии, эволюционировавший из своего предшественника Vi, созданного Биллом Джоем в 1976. . .
NoSQL базы данных: что это такое и какие существуют
bytestream 22.01.2025
В современную эпоху цифровой трансформации объемы данных растут экспоненциально, создавая новые вызовы для традиционных систем управления базами данных. NoSQL (Not Only SQL) представляет собой. . .
Обновление исследования от команды MCM (январь 2025 г.)
Programma_Boinc 22.01.2025
Обновление исследования от команды MCM (январь 2025 г. ) Мы продолжаем изучать молекулярные сигнатуры, связанные с раком легких, с текущим фокусом на GCM1, факторе транскрипции, участвующем в. . .
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru