![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Fyrklod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.10.2006 Репутация: нет Всего: 1 |
не уверен, что правильно щас говорю.....но...
можно ли сделать индексатор в классе так чтобы к массиву обращаться не по индексу типа int , а по имени, т.е. masiv["name1"], masiv["name2"] заранее прошу не ругаться, если это глупость --------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов! |
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 5 Всего: 39 |
Почему нет?
Теперь можно создать экземпляр такого крокодила и кормить строками :
Это сообщение отредактировал(а) marcusmae - 6.10.2007, 20:58 -------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
Вместо Convert.ToInt32(name) лучше использовать Int32.Parse(name) (потому как эта реализация введена не в постороннем к строкам и числам классе Convert, а внутри самого Int, т.е. более оптимальный алгоритм)
А еще лучше использовать Int32.TryParse (name, out result) ибо если строка не приведется к int, то выбросится исключение, которое никто (как я посмотрел) обрабатывать не собирался. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 5 Всего: 39 |
Согласен, спасибо. В любом случае это - лишь пример, поскольку я не знаю, что Fyrklod собирается делать со строками, передаваемыми индексатору. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Вообще, скорее всего имелось ввиду "как сделать доступ по имени" а не по индексу. В таком случае парсить ничего не надо, вместо этого заводим в классе поле с типом Dictionary<string, bla-bla-bla>, где "bla-bla-bla" - элемент массива, в терминах Fyrklod. А в get/set индексатора помещаем простейшую фигню типа получить/присвоить элемент Dictionary по строковому ключу.
-------------------- ![]() |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 5 Всего: 39 |
Ха, ну если так, то можно использовать в чистом виде generic-словарь Dictionary<string, T>, где T - требуемый тип. Словарь и так уже имеет индексатор по ключу, то есть по именам Подробнее можно посмотреть в MSDN. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Хотелось бы услышать автора топика, что он думает по данному вопросу.
-------------------- ![]() |
|||
|
||||
| Fyrklod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.10.2006 Репутация: нет Всего: 1 |
всем спасибо
--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов! |
|||
|
||||
| Fyrklod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.10.2006 Репутация: нет Всего: 1 |
Данный вопрос поднимался для того чтобы доказать кое-кому что такое возможно
--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов! |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
пожалуйста:
-------------------- ![]() |
|||
|
||||
| GavriKos |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 8.8.2007 Где: Донецк, Украина Репутация: нет Всего: 1 |
А нельзя еще проще? В С кажется можно было использовать любые перечисляемые типы как индексы массива. Т.е. в теории можно юзать и char. Не знаю, насколько это работало, но вот возможно ли в c# такое?
--------------------
Донецкая группа IT - присоединяемся |
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 5 Всего: 39 |
GavriKos, нет. Даже в случае перечислений (enum) понадобится явное приведение типов. Но явно привести можно пробовать любой тип, char в частности :
Однако, есть такая штука, как явные и неявные операторы приведения - см. MSDN. Оттуда же можно понять, по какой причине эти неявные приведения не определены по умолчанию для втроенных типов :
Это сообщение отредактировал(а) marcusmae - 7.10.2007, 22:55 -------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |