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

Упорядочить List по классам объектов

05.03.2018, 20:32. Показов 1484. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовал , не работает, не пойму почему
Class MyComparer
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
 public class MyComparer : IComparer<Transport>
    {
        int IComparer<Transport>.Compare(Transport x, Transport y)
        {
            return (x.GetType() == y.GetType()) ? 0 : (x is SpecialCargoTransport && (y is PassengerTransport | y is CargoTransport)
                || (x is CargoTransport && y is PassengerTransport)) ? -1 : 1;
        }
    }

вывод на консоль
Кликните здесь для просмотра всего текста
C#
1
2
3
4
            transports.Sort(new MyComparer());
            foreach (Transport viev in transports)
                Console.WriteLine(transports.GetType());
            Console.ReadLine();

Объясните мне пожалуйста, что не так?
Возможно и работает, но наверное я как-то не так вывожу это все на консоль..
Вот что выдаёт консоль
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
System.Collections.Generic.List`1[Program.Transport]
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2018, 20:32
Ответы с готовыми решениями:

Массив объектов класса List: Error CS0118: `list' is a `field' but a `type' was expected
Не могу понять что делаю не так, вот код: SimpleClass { } List&lt;SimpleClass&gt; list = new List&lt;SimpleClass&gt;(); list = new...

Копирование объектов List в другой List
Есть ли способ менее топорового копирования объектов одного List'а в другой List? List&lt;Card&gt; OriginalDeck = new List&lt;Card&gt;();...

List<T> сортировка объектов. Возможно ли?
Как правильно произвести сортировки Листа. Вот код ,который я намудрил, но он не комплируеться :( темы сортировки читал, там о такой...

6
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
05.03.2018, 20:39
C#
1
2
3
4
            transports.Sort(new MyComparer());
            foreach (Transport viev in transports)
                Console.WriteLine(viev.GetType());
            Console.ReadLine();
0
0 / 0 / 3
Регистрация: 04.01.2014
Сообщений: 136
05.03.2018, 20:43  [ТС]
теперь Program.SpecialCargoTransport
Program.SpecialCargoTransport
Program.SpecialCargoTransport
Program.SpecialCargoTransport
Program.CargoTransport
Program.CargoTransport
Program.CargoTransport
Program.CargoTransport
Program.PassengerTransport
Program.PassengerTransport
Program.PassengerTransport
Program.PassengerTransport
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
05.03.2018, 20:59
Лучший ответ Сообщение было отмечено kloppy69 как решение

Решение

ты же вроде сам хотел .GetType()?
для просто вывести сотри .GetType() и все, если у тебя в классе перегружен ToString()
1
0 / 0 / 3
Регистрация: 04.01.2014
Сообщений: 136
05.03.2018, 22:16  [ТС]
Diamante, да, вы правы)) мой косяк

Добавлено через 1 час 5 минут
Diamante, подскажите еще пожалуйста один момент
C#
1
return (x.GetType() == y.GetType()) ? 0 : (x is SpecialCargoTransport && (y is PassengerTransport | y is CargoTransport) || (x is CargoTransport && y is PassengerTransport)) ? -1 : 1  ;
по логике должен получаться вывод SpecialTransport=>PassengerTransport=>Ca rgo Transport
а выходит Spec.=>Cargo.=>Pass.(сокр)
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
06.03.2018, 00:57
kloppy69, тут рояль играет или, в сравнениях никаких или быть не должно, все должно быть однозначно, для однозначного результата
у тебя "ошибка проектирования", типы надо было вынести в перечисление(enum), дать им числовые значения и их сравнивать, это первое
второе, перечисления не дадут ошибиться в выборе того или иного
default: так правильно и точка!
З.Ы. есть нюансы, но на твоем этапе, просто прими как данное
1
0 / 0 / 3
Регистрация: 04.01.2014
Сообщений: 136
06.03.2018, 07:44  [ТС]
Diamante, Понял, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2018, 07:44
Помогаю со студенческими работами здесь

Сериализация List массива объектов
Привет всем, можете пожалуйста объяснить как сделать xml-серелизацию List'а в котором хранятся объекты. Всем спасибо :)

List для объектов двух классов
Есть родительский класс Cars и унаследованный PriceCars. Есть класс, в котором создаётся коллекция для хранения объектов этих двух классов...

Вывод полей объектов из коллекции List в DataGridView
Помогите разобраться. Данные для вывода dataGridView1.DataSource я беру из коллекции List&lt;Класс1&gt;. Все нормально выводится. Я создаю...

Сортировка объектов в List по полю типа DateTime
У меня есть лист, в котором есть некоторые объекты класса Birthday, у которых есть поле Date типа DateTime. Как отсортировать их в листе...

Упорядочить массив объектов по алфавиту
Вообщем делаю курсовую работу в которой содержаться данные о человеке(фамилия,инициалы,день рождения,месяц рождения,знак зодиака). Я...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru