Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 15
.NET 4.x

Как определить тип элемента в ArrayList?

21.03.2017, 19:48. Показов 2400. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс абстрактный животные, от него наследуются 2 класса хищники и травоядные, от этих классов наследуются классы, волк, олень, заяц, лиса. В мейне создаются экземпляры четырех последних классов и добавляются в коллекцию ArrayList. Нужно определить колличество экземпляров каждого из классов в данной коллекции. Не могу понять как обратиться к итому элементу коллекции и определить тип этого элемента. Вот текст задания -

Создать класс «животные», производные классы «хищники» и «травоядные», затем производные классы
«волк», «лиса», «заяц», «олень». Содержимое класса – на собственное усмотрение. Создать массив
объектов с произвольным количеством экземпляров всех указанных классов и подсчитать, сколько в
массиве хищников и травоядных, волков, лис, зайцев и оленей 2.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2017, 19:48
Ответы с готовыми решениями:

Разный тип данных в ArrayList
Программа сканируем каталог и подкаталоги. Нужно результат записывать в массив. Вот пример: ArrayList ff = new ArrayList(); ...

Считать значение из словаря имеющее тип ArrayList
Ситуация такая. Имею словарь вида Dictionary<string, ArrayList>. При считывании значения выдаёт вместо самого значения его тип -...

Поиск и удаление элемента из ArrayList
Всем привет! Возник такой вопрос: Есть класс. class MyClass { string name; public MyClass(string Nam) { ...

3
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
21.03.2017, 20:03
C#
1
2
3
4
5
6
7
8
class ClassName
{
}
 
if (arrayList[i] is ClassName)
{
    ...
}
Кстати в задании что-то я про ArrayList вообще ничего не увидел. Сказано создать массив, но сути это конечно не меняет...
1
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 15
21.03.2017, 20:38  [ТС]
Спасибо большое, такая мелочь. не бывать мне программистом походу)
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
21.03.2017, 21:02
Решение как пример.

Помимо этого есть еще typeof() и еще какой-то, забыл, реализующий IEnumerable...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace _
{
    class Program
    {
        public static void Main()
        {
            List<Animal> animal = new List<Animal>
            {
                new Wolf(),
                new Fox(),
                new Hare(),
                new Wolf(),
                new Fox(),
                new Hare(),
                new Deer(),
                new Hare(),
                new Deer(),
                new Deer(),
                new Hare(),
                new Deer(),
                new Fox(),
                new Hare(),
            };
 
            // Если не переопределен ToString()
            var type = animal.Select(a => a.ToString()).Select(a => Type.GetType(a));
            var baseType = animal.Select(a => a.ToString()).Select(a => Type.GetType(a).BaseType);
 
            // но это лишнее, т.к. есть
            var types = animal.Select(a => a.GetType());
            var baseTypes = animal.Select(a => a.GetType().BaseType);
 
            Console.WriteLine(string.Join(" ", type));
            Console.WriteLine(string.Join(" ", baseType));
            Console.WriteLine(string.Join(" ", types));
            Console.WriteLine(string.Join(" ", baseTypes));
 
            Console.WriteLine();
 
            var typp = animal.Select(a =>
            new {
                type = a.GetType(),
                baseType = a.GetType().BaseType
            })
            .ToLookup(t=> t.baseType, t=>t.type);
 
            foreach(var t in typp)
            {
                Console.WriteLine(t.Key);
                Console.WriteLine(string.Join(" ", t.Select(tt => tt)));
            }
            Console.WriteLine();
 
            // Ну и решение по ТЗ в одну строчку
            Console.WriteLine(string.Join(Environment.NewLine, typp.Select(t => $"{t.Key} {t.Count()}{Environment.NewLine}{(string.Join(" ", t.GroupBy(tt=>tt).Select(tt=> $"{tt.Key} {tt.Count()}")))}")));
 
            Console.ReadLine();
        }
    }
 
    abstract class Animal
    { }
 
    abstract class Predator : Animal
    { }
 
    abstract class Herbivores : Animal
    { }
 
    class Wolf : Predator
    { }
 
    class Fox : Predator
    { }
 
    class Hare : Herbivores
    { }
 
    class Deer : Herbivores
    { }
 
}
Правда это с List, да и ArrayList тут не нужен, но и с ним пройдут подобные махинации или приводить к ToArray(), т.к. в данном случае можно, если нет, то перебором выявлять типы и затем всё также.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.03.2017, 21:02
Помогаю со студенческими работами здесь

Как узнать тип MaxValue типа элемента
Делаю примерно так, но так не выходит по объективным причинам. a.Id.GetType().MaxValue как выяснить максимальное значение типа...

Как получить тип элемента обобщенной коллекции?
Добрый день, господа! Столкнулся с нетривиальной задачей: как получить тип элемента коллекции List&lt;T&gt;, в которой нет значений. ...

Нахождение минимального и максимального элемента ArrayList
Суть задачи такова - имеется массив элементов, в котором нужно поменять местами минимальное и максимальное значение. Массив генерируется...

Проблемы с поиском максимального элемента в ArrayList
Доброго времени суток, Форумчане! Есть такая проблема: объявлен словарь protected Dictionary&lt;string, ArrayList&gt;...

Сортировка ArrayList и вставка элемента в произвольное место
В набор ArrayList поместить случайные значения типа Int в диапазоне(300...500) и количестве(2030) с помощью метода add. Отсортировать...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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 https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
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. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru