| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Вопрос? Индексаторы |
| Автор: Neuromancer 1.9.2006, 12:17 |
| Прошу учесть я в программировании совсем зеленый потихоньку продвигаюсь, конечно, ну вопросов ну просто море и .NET и PHP и Базы данных ну очень много всего интересного взять бы и все созданные темы прочитать такой объем информации жаль, человек ограничен по времени закачать бы всю эту базу форумов прямо в мозг отвлекся малость Собственно сам вопрос, что такое ИНДЕКСАТОРЫ для чего они вообще нужны, и как их использовать не забывайте я новичок, опишите, чтоб все понятно было, разложите по полочкам теорию и + какой нибуть пример с хорошо прокоментированным кодом. |
| Автор: ivashkanet 1.9.2006, 12:51 |
| Neuromancer, вступление мне понравилось Все что ты просишь объснить --- очень подробно объяснено в книгах/учебниках по C#. Ты хочешь чтобы мы привели цытаты? Neuromancer, мой совет, возми любую книгу (лучше всего http://dm9.ru/vingrad/books_from_medigo_ru/candnet.zip), там все подробно об этом написано Ну либо если хочешь все сейчас: http://www.intuit.ru/department/pl/csharp/16/3.html |
| Автор: marcusmae 1.9.2006, 13:03 | ||||||
| Попробую состроить из себя ivashkanet Если речь идёт о свойствах-индексаторах, то на пальцах объяснил бы примерно так. Пусть есть объект, который ты хочешь запрограть в библиотеку, и этот объект изначально подразумевает множественность. Допустим... сороконожка
Таким образом, получается возможность скрыть от детей и беременных женщин твою живодёрскую манеру хранить ноги где-то там в отдельном массиве, и получить ногу можно будет только по этому свойству-индексатору :
В этом примере я попытался показать, что свойство-индексатор иногда способно увеличить удобство использования классов. Кроме этого, не следует забывать что это - свойство, то есть, помимо возврата элементов массива, можно выполнять ещё какие-нибудь скрытые действия :
Более того, массива, который скрывается за свойством в этих примерах, может вообще не быть! = То есть, со стороны свойство-индексатор представляет какие-то элементы, как массив, но на самом деле они хранятся как-то иначе. На жирафах пример придумать не сумел, но напиши дополнительно, если не понятно. |
| Автор: reloni 1.9.2006, 13:04 | ||||
Индексаторы позволяют обращаться к полям твоего класса так же, как к массиву.
Тоже самое можно сделать для своего класса. class SimpleClass { private ArrayList _array = new ArrayList(); public SimpleClass() { this._array.Add("Москва"); this._array.Add("Санкт-Петербург"); this._array.Add("Калининград"); this._array.Add("Астана"); } // this означает, что это индексатор public string this[int index] { get { if (index < this._array.Count && index >= 0) { return this._array[index].ToString(); } else throw new Exception(); } } } public string this[int index] Данный индексатор принимает один параметр типа int (может принимать больше одного), а возвращает string, в нашем случае название города
Данный пример надуман, но как пример работы подходит я думаю ps если мне не изменяет память, то в Троелсене ничего про индексаторы нет, во всяком случае вспомнить не могу. Пока писал, уже опередили меня |
| Автор: reloni 1.9.2006, 13:21 |
Действительно А я уже было думал, как он мог это упустить. |
| Автор: VisualProgrammerNET 1.9.2006, 14:02 |
| Автор: Neuromancer 1.9.2006, 14:04 |
| Спасибки всем огромное я читал "Шилдг Г.Полный справочник по С#" но не до конца все понял в индексаторах, хотел, чтоб вы своими словами получше объяснили в следующий раз я буду поподробней писать, что я прочитал, и что я конкретно не понял (ой замучаю я вас своими вопросами что конкретнее вопрос не поставил, в следующем я все учту. Да кстати спасибки за книжечку скал "... то, что ты получаешь от общества, будет обществом в тебе и для тебя, так же как то, что ты даешь ему, будет твоим в обществе и для общества. Стремись получить от общества все, но не давай ему порабощать себя и не отдавайся ему полностью". М. де Унамуно жажда знаний, присущая всем людям, представляет собой неизлечимую болезнь. Человек смертен, человечество бессмертно; человек ограничен, человечество обладает способностью к бесконечному развитию. МИХОЭЛС С.М. ...Не имеет значения, что кто-либо говорит или делает... Т_ы_ с_а_м_ должен быть безупречным человеком... ...Нам требуется все наше время и вся наша энергия, чтобы победить идиотизм в себе. Это и есть то, что имеет значение. Остальное не имеет никакой важности... Дон Хуан (К. Кастанеда "Второе Кольцо силы") |
| Автор: ivashkanet 1.9.2006, 14:10 |
Не волнуйся, нас просто так не возьмешь Некоторых (меня в частности) бесит не глупые вопросы, это не страшно, а нежелание думать самому (к тебе это не относится Так что обращайся --- всегда рады помочь P.S. Всегда рады новым людям. Добро пожаловать. |