![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Coocky |
|
||||||||||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
1.Есть свой класс-Sashska .Внутри него есть поля. Одним из них есть обьект класса Rectangle rect.
Где мне лучше его инициализировать в кострукторе класса, зполнив предварительно нулями типа
, а затем, заполняя через обьект
или можно вот так просто обьявив обьект конструкторе
а затем
2. Есть ArrayList. Я заполняю его обьектами класса Sashka, через метод Add(s). Должен ли я каждій раз перед єтим методом делать
, или достаточно один раз создать обьект, а затем делать
3.Почему я стучусь до обьектов через
Если есть в МСДН ArrayList.Item, но оно мне не доступно????? З.І.Прошу пардон за много тем, но у меня блат:-)))) Это сообщение отредактировал(а) Coocky - 27.5.2005, 21:55 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||||||||||||
|
|||||||||||||||
| Kurt |
|
||||||||||||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
1.
Рассмотрим первый случай. Заполняем в конструкторе.
Во-первых, ты что, поле класса объявляешь в конструкторе?! Должно быть так:
Ну, да ладно, не в этом дело. Итак, смотрим. В данном случае у тебя будет следующее: создается объект класса Shashka и в его конструкторе создается объект класса Rectangle. Что значит создан объект? Это значит выделена память, вызван конструктор и возвращена ссылка на выделенную область памяти. Дальше ты делаешь
т.е. создаешь НОВЫЙ объект (т.е. опять выделяешь память и т.п.) класса Rectangle и присваиваешь ссылку на него полю s.rect. А что стало с тем объектом, что ты создал в конструкторе? А ничего - ссылка на него теряется и он будет убран GC. Во-втором случае, при вызове конструктора Shashka() память на поле rect не выделяется. Итог. Если ты гарантированно будешь вызывать
то в первом случае ты выделяешь лишнюю память. Тратишь и оперативку и процессорное время. 2. Предложение
помещает в ArrayList ССЫЛКУ на объект s. Таким образом, если ты не будешь постоянно выполнять
то в ArrayList всегда будет добавляться одна и та же ссылка (т.е. один и тот же адрес памяти). Кроме того, строки
всегда будут изменять один и тот же объект. Итог. Если не будешь выполнять "new Shashka" при каждом добавлении в ArrayList - получишь список, состоящий из ссылок на один и тот же объект, в к-м поля будут заполнены значениями, к-е присваивались перед последним добавлением. Если не веришь - просто попробуй. 3. Использовать foreach, или накрайняк for, религия не позволяет? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||||||||||||
|
|||||||||||||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Kurt
Ща, секунду, пререкурю-поспорить охота.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Coocky |
|
||||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Kurt
Пардон, опечатался...Это ж не структура
Пробовал, поэтому и спросил
Те. второй вариант-обьявление в классе, а за пределом-инициализация?
Не понял....Мне Item охота. Там всего один параметр index, и в цикле сгодится, но НЕТ Item. Недоступен! -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||||||
|
|||||||||
| Kurt |
|
||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Если гарантировано потом будешь менять это поле - да. Это более эффективно.. Хотя.. По "всем правилам" в классе должны инициализированться по дефолту все поля.
Слабо понимаю, чего ты хочешь. Пробежаться по всем элементам ArrayList'а? Тогда почему foreach не годится? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||
|
|||||
| Coocky |
|
||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Kurt
Итак, пишу с головы.... Насколько я знаю, или нашел в МСДН, для получения эллементы из массива по индексу, есть Item, и есть метод GetEnumerator().Первый мне почему-то не доступен(ну нет его в выпадающем списке) он и проще....
Конечно гарантировано. Иначе константа...
Так может "хотя" обсудим? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||||
|
|||||||
| Kurt |
|
||||||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
По поводу GetEnumerator в два ночи как-то плохо соображается. Используй foreach или for. Чем они тебе не угодили? Типа так:
Кстати, использование foreach с коллекциями именно в MSDN и описано..
Ну, как я слышал, типа не инициализировать поля - плохой стиль. Вдруг ты чего забудешь и не выполнишь
- вывалишься в Exception при обращении к неинициализированному полю. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||||||
|
|||||||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Вываливался, но потом разбирался
Да..Еще есть вариант, который я использовал..Но Есть же в описании ArrayList Item? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| Kurt |
|
||||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Читаем в MSDN (есессно, в описании класса ArrayList):
Отсюда видно, что Item в C# - это индексатор. Для доступа к конкретному элементу используется индекс, "квадратные скобки". Чтоб окончательно удостовериться, кликнем по слову "Item" в MSDN-описании:
Т.е. "al[i]" - это и есть твой Item. (в C#) -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||||
|
|||||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Kurt
Спасибо, видать за недельку еще не расчихлился в новом МСДН. Иди спать уже, достал я тебя -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |