Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
2 / 2 / 1
Регистрация: 29.10.2016
Сообщений: 36

Почему индексаторы называют интеллектуальными массивами?

24.10.2017, 17:17. Показов 3727. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я знаю, что индексаторы позволяют обращаться с объектом класса как с массивом. Индексатор схож со свойством, но принимат в качестве параметра индекс массива. Но в чем проявляется сам "интеллект" индексатора не могу понять
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.10.2017, 17:17
Ответы с готовыми решениями:

Индексаторы c массивами
enum category {...}; public interface number { string name { get; set; } ...

Почему иногда свойствами называют и переменные класса, а так же set и get
Почему иногда свойствами называют и переменные класса, и так же функции set, get? Допустим написано, что интерфейс может содержать...

Почему комплектующие для ПК называют железом?
Почему комплектующие для пк, называют железом?

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
24.10.2017, 17:43
Цитата Сообщение от maksimizzza Посмотреть сообщение
Почему индексаторы называют интеллектуальными массивами?
Первый раз встречаю такое название.
Предполагая, что это я не знаю определений, сделал запрос в гугл — на первых десяти страницах ничего об индексаторах классов нет. Дальше не смотрел.
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
24.10.2017, 17:52
Лучший ответ Сообщение было отмечено maksimizzza как решение

Решение

maksimizzza, не обязательно индексаторы реализуют именно массивы. То, что с помощью них можно реализовать "умные" массивы, в принципе верно. Умное заключается в том, что можно прописать любую логику обращения к индексу

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       
 public int this[int index]
        {
            set
            {
                //любая логика
                arr[index] = value;
            }
 
            get
            {
                //любая логика
                return arr[index];
            }
        }
Например, мы хотим создать что-то наподобие массива, но только чтобы в нем хранились четные числа. Создали класс с индексированным свойством, как выше. И внутри set делаем проверку на value:
C#
1
2
if (value%2==0) arr[index] = value;
else throw new Exception("Ошибка! Невозможно присвоить нечетное число");
или
C#
1
2
if (value%2==0) arr[index] = value;
else arr[index] = value - 1; //получаем ближайшее четное число с округлением в меньшую сторону
В общем-то в логику можно вложить все, что угодно
1
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
24.10.2017, 18:07
Цитата Сообщение от maksimizzza Посмотреть сообщение
Почему индексаторы называют интеллектуальными массивами?
Первый раз такое слышу. Как индексатор вообще можно назвать массивом (пусть даже интеллектуальным)?
Это просто метод (вернее два) со специализированным синтаксисом. И принимать он может не только индекс, а все что угодно, насколько я знаю.
0
1 / 1 / 0
Регистрация: 16.10.2017
Сообщений: 33
17.11.2017, 17:07
Мало ли, может кому то потом понадобится:
Индексаторы называют интеллектуальными массивами, т.к. обращение к индексатору внешне выгляди как обращение к массиву. Индексатор позволяет обращаться с объектом, будто он сам является массивом. Присутствует логика в работе с полями (пример: если задать в радианах угол, то он сам переведёт его в градусы).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2017, 17:07
Помогаю со студенческими работами здесь

Почему первый Лисп называют функциональным?
Да, функции как аргументы... но, там же вроде не было заморочек с переменными и чистотой.

Почему РОН называют сверхоперативной памятью процессора?
Почему РОН называют сверхоперативной памятью процессора?

Почему адаптивную вёрстку в <=5 брекпойнтов называют правильной
Я как понял по этой логике, если больше брекпойнтов то она не правильная, а вы как считаете? Вопрос заинтересовал, т.к. у меня обычно 10-20...

Почему некоторые объекты называют с большой буквы и не апперкейсом?
Например, объект Window. Как я понимаю, он глобальный. Здесь пишут что глобальные объекты обычно пишут полным uppercase'ом. Еще я...

Почему не срабатывают условия в операторе if (работа с массивами)?
Приветствую. Есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; int main() { float...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки 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. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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