![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| headzero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 14.11.2006 Репутация: нет Всего: 1 |
Вопрос такой. Допустим есть форма и грид, куда считывать данные из базы. Для этого нужно создавать два обьекта датаАдаптер и датасет. Где их правильей всего создавать:
1) Обявлять и Создавать как поля класса 2) Обьявлять как поля класса, а потом создавать в вызывающем методе, который заполняет? 3) Создавать ннепосредственно в методе. Как про этом они будут вести себя в памяти? Как я понимаю, если создавать как поля класса, они будут в памяти все время существования класса, а если в методе, то они уничтожаться после выхода из медота. Вопрос не конкретно про базы данных, а интересует компетентная точка зрения на проблему в целом: когда и как правельней создавать обекты в памяти Спасибо. Буду рад комментариям.Извеняюсь за неточности в терминологии) P.S Для примера мой код
-------------------- Воображение важнее знания (Алберт Эйнштейн) |
|||
|
||||
| Dblma |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 6.11.2007 Где: Moscow Репутация: нет Всего: 1 |
В любом варианте нельзя точно сказать, когда именно уничтожится объект из кучи (любой, не только DBConnector). Этом решает Сборщик мусора (GC). В любом случае, не ранее, чем GC не сможет составить путь в графе ссылок к объекту. Т.е. если сделать DBConnector членом класса, то он уничтожится не ранее, чем мы потеряем ссылку на объект класса, в котором он содержится. А если DBConnector создавать внутри метода - то ссылка (как локальная переменная) потеряется при выходе из метода.
Где и как держать объект DBConnector (и др.) - зависит от того, как этот объект будет использоваться. Если постоянно - то создаём член класса (возможно даже статический). Если DBConnector (и др.) нужен всего 1 раз, то лучше создавать локально внутри метода и внутри директивы using. Вот так:
Это гарантирует, что при выходе из блока using вызовется Dispose для cforEdit (что, в общем, не освободит память этого объекта, а только закроет соединение и освободит все ресурсы). Это сообщение отредактировал(а) Dblma - 13.3.2008, 10:27 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |