Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 69

Индексатор класса

14.12.2023, 11:40. Показов 697. Ответов 8

Студворк — интернет-сервис помощи студентам
Нужно получить значения добавленых данных, не получаеться реализовать индексатор класса и получить добавленные данные

Класс типа данных
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class xTableData
    {
        struct xData
        {
            public List<string> name;
            public List<object> value;
        }
 
        xData data = new xData();
 
        public xTableData()
        {
            data.name = new List<string>();
            data.value = new List<object>();
        }
 
        public void Add(string name, object value)
        {
            data.name.Add(name);
            data.value.Add(value);
        }
    }
Использование
C#
1
2
3
4
5
6
7
8
9
10
11
12
List<xTableData> xLine = new List<xTableData>();
xTableData xData = new xTableData();
 
object bNull = null;
 
for (int i = 0; i < 10; i++)
   xData.Add(i.ToString(), bNull);
 
xLine.Add(xData);
 
//Здесь хочу получить значение xLine индекса 0 и значения индекса 3 у xData
//Результат должен 2 и bNull
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.12.2023, 11:40
Ответы с готовыми решениями:

Написать индексатор для класса Vector
class Vector { Time arr; ….. } Написать индексатор для класса Vector. Индексатор должен выполнять обработку исключительных...

Индексатор
Доброго времени суток. Нужна Ваша помощь. В классе ниже есть 2 поля. Мое задание(дословно): сделать &quot;Индексатор, позволяющий...

Индексатор для List<>
Добрый день! Кто подскажет C# как проще работать с коллекцией List&lt;&gt; //Имеем класс class Section { ...

8
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,732
Записей в блоге: 1
14.12.2023, 11:58
Используйте словарь
0
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 69
14.12.2023, 12:00  [ТС]
Я об этом думал но решил использовать свой класс
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
14.12.2023, 12:13
turbo_x, то что вы написали делается обычным Dictionary<string,object>
если уж совсем хочется закатывать солнце вручную тогда класс нужно переделать
Кликните здесь для просмотра всего текста
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
    public class XData
    {
        public XData() { }
        public XData(string name, object value)
        {
            Name = name;
            Value = value;
        }
 
        public string Name { get; set; }
 
        public object Value { get; set; }
    }
 
    public class XTableData
    {
        private List<XData> _dataList = new List<XData>();
 
        public void Add(XData data)
        {
            _dataList.Add(data);
        }
 
        public void Add(string name, object value)
        {
            Add(new XData(name, value));
        }
 
        public XData? Get(string name)
        {
            return _dataList.FirstOrDefault(x => x.Name == name);
        }
 
        public XData this[int i] => _dataList[i];
    }
 
    public class Test
    {
        public void TestXData()
        {
            var xTData = new XTableData();
 
            object bNull = null;
 
            for (int i = 0; i < 10; i++)
                xTData.Add(i.ToString(), bNull);
 
            var xline = new List<XTableData>();
            xline.Add(xTData);
 
            var xTableData = xline[0];
            var xdata = xTableData[3];
            var xDataName = xdata.Name;
            var val = xdata.Value;
        }
    }


Добавлено через 1 минуту
Цитата Сообщение от Uswer Посмотреть сообщение
Используйте словарь
Он не позволит хранить данные с одинаковыми ключами.
0
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 69
14.12.2023, 12:25  [ТС]
Andreyip, не компилирует эти строки

C#
1
2
3
4
        public XData? Get(string name)
        {
            return _dataList.FirstOrDefault(x => x.Name == name);
        }
Ошибки
C#
1
2
3
Ошибка    CS0453  Для использования в качестве параметра "T" в универсальном типе или методе "Nullable<T>" тип "XData" должен быть типом значения, не допускающим значения Null.
 
Ошибка    CS0266  Не удается неявно преобразовать тип "X.Structures.XData" в "X.Structures.XData?". Существует явное преобразование (возможно, пропущено приведение типов).
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
14.12.2023, 12:27
turbo_x, уберите ? у XData так

C#
1
2
3
4
    public XData Get(string name)
        {
            return _dataList.FirstOrDefault(x => x.Name == name);
        }
1
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 69
14.12.2023, 12:54  [ТС]
Andreyip, Спасибо!
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,732
Записей в блоге: 1
14.12.2023, 13:19
Цитата Сообщение от Andreyip Посмотреть сообщение
Он не позволит хранить данные с одинаковыми ключами.
C#
1
return _dataList.FirstOrDefault(x => x.Name == name);
А как это позволит извлечь что-то второе с одинаковым ключом?
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
14.12.2023, 14:43
Мда... чем бы дитя не тешилось, лишь бы не вешалось. Связка кортеж + List, если нужны дубликаты или какие там ещё у вас причины не использовать словарь.

C#
1
2
3
4
var list = new List<(string Name, object Value)>();
list.Add(("name", new object()));
var item = list[0];
var item2 = list.FirstOrDefault(x => x.Name == "123");
Ну либо более "классический вариант" через List<MyType>.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2023, 14:43
Помогаю со студенческими работами здесь

В каком интерфейсе объявляется индексатор?
я хочу в качестве аргумента метода принимать такую структуру данных, в которой можно осуществлять обращения к элементам по индексу. потому...

Описать индексатор, в котором индексом служит обобщённый параметр
Задачка из книжки. Напишите программу, в которой есть обобщённый класс с двумя обобщёнными параметрами(первый и второй). У класса...

Индексатор и поле класса
как дописать класс, чтобы можно было задавать значение в объекте и по индексу аксессора и по полю класса? (если такое возможно) ...

Индексатор для класса Vector
3) class Vector { Time arr; ........ } Написать индексатор для класса Vector.

Индексатор и перегрузка операторов для класса Triangle
на Form/ помогите пожалуйста В класс Triangle добавить: a. Индексатор, позволяющий по индексу 0 обращаться к полю a, по индексу 1 –...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru