Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Как по "умному" переписать класс |
Автор: Ch0bits 26.3.2006, 20:50 | ||
Вот такая штука: осуществляет доступ к объектам по имени (имена не должны совпадать). Как бы это привести к человеческому виду и чтобы можно было через foreach получать элементы? А то наворотил я тут... ![]() ![]() |
Автор: Void 26.3.2006, 21:17 |
Ch0bits, тебе обязательно нужен доступ по индексу? Если нет, то все что тебе нужно — это System.Collections.Generic.Dictionary<string, object>. |
Автор: Ch0bits 26.3.2006, 21:41 |
Да. |
Автор: Void 26.3.2006, 22:34 | ||
Рискну все-таки уточнить. Если индекс тебе нужен только для перебора всех объектов, то все равно можно обойтись Dictionary, потому что он реализует IEnumerable. Если же нужен именно индекс, можно сделать примерно так: завести маппинг строковых имен на индексы плюс индексируемый список или массив объектов. Чтобы обеспечить быстрое удаление по индексу, вместе с объектами в списке будем держать их имена. Если объекты удаляются нечасто, а оверхед по памяти критичен, можно этого и не делать.
|
Автор: Ch0bits 26.3.2006, 22:48 | ||
Void Круто пишешь. ![]() Да. Мне там всё нужно. Вот сам прилепил работу с foreach.
|
Автор: Void 26.3.2006, 22:56 |
Если ты пишешь на .NET 2.0, то эти извраты с ручным созданием IEnumerator ни к чему — пользуйся yield. Добавлено @ 22:57 Чем мой вариант-то не устроил? Доступ по имени у тебя будет сильно тормозить на большом количестве объектов. |
Автор: Ch0bits 26.3.2006, 22:57 |
Void Аааа! Какой ты умный! ![]() ![]() А чего это? Добавлено @ 22:59 Я теперь им пользуюсь. ![]() |
Автор: Void 26.3.2006, 23:28 |
См. http://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_csref/html/f45331db-d595-46ec-9142-551d3d1eb1a7.asp. |