![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
tot |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
вот такой незатейливый код
как теперь обратится к вложенному хешу(добавить к пару)? вот так выдает ошибку
можно конечно через временную переменную
но смотрится отвратительно, писать долго, да еще и целая бесполезная переменая вылазит и не пойду в случае большей вложенности. |
||||||
|
|||||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
-------------------- СУВ, Partizan. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Hashtable вообще отвратно смотрится, как и любая нетипизированная коллекция, юзай Dictionary.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Ещё можно использовать System.Collections.Generic.Dictionary вместо Hashtable, тогда приведение типов не понадобится.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
tot |
|
||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
Спасибо за помощь. Еще вопрос: как передать параметр по ссылке с одновременным преобразованием типов?
выдает ошибку для обхода этого создаю лямбда функцию
наверняка можно как то проще |
||||
|
|||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
класс по ссылке? зачем?
он уже reference (ссылочный) тип, а ref полезен для value-types (типов-значений), без него передаётся не экземпляр, а его копия и, как уже заметили, всё прогрессивное человечество использует дженерики, то, что ты успел подружиться с Hashtable, не оправдывает отказ от строгой типизации, тем более при использовании дженериков вопрос о приведении типа вообще не возникнет Это сообщение отредактировал(а) mihryak - 7.3.2009, 01:52 |
|||
|
||||
QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Ошибаетесь, ref полезен и для ссылочных типов. -------------------- I don't need a reason being who I am... |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
||||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Легко, стандартный пример:
Вообще, при применении модификатора ref для параметров ссылочных типов в метод передаётся не ссылка на объект, а ссылка на ссылку на объект, что позволяет не только менять поля объекта, но и изменить значение самой ссылки. Подробнее читай тут. Это сообщение отредактировал(а) source777 - 7.3.2009, 18:24 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Еще пример (более наглядный):
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
Зачем этот код может понадобиться? Я прекрасно понимаю, что он делает, - но зачем?
Я это тоже знаю, со swap'ом согласен, в сортировках порой применяется и в .... а где ещё? Но, право слово, за всё время, что занимаюсь программированием, мне ни разу не требовалось изменять ссылку переданного объекта. В то же время, регулярно вижу код, где используют ref в тех местах, где он вообще не нужен или без него код выглядел бы более красивым. В моём понимании, параметр либо входной, либо выходной (давайте без интеропов всяких это прочитаем). Даже к out отношусь крайне скептически - то ещё уродство, но в некоторых случаях без него никак. Это сообщение отредактировал(а) mihryak - 7.3.2009, 19:43 |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
mihryak, TryGet/TryParse?
|
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
||||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Модератор: От сути топика слишком отошли
-------------------- СУВ, Partizan. |
|||
|
||||
tot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
да уж, очень сильно отошли от темы. По поводу то что классы передаются по ссылке понял, спасибо.
Но на будущее как же передать ссылку на ссылку? |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |