| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Когда создавать оъекты? |
| Автор: headzero 12.3.2008, 23:17 | ||
| Вопрос такой. Допустим есть форма и грид, куда считывать данные из базы. Для этого нужно создавать два обьекта датаАдаптер и датасет. Где их правильей всего создавать: 1) Обявлять и Создавать как поля класса 2) Обьявлять как поля класса, а потом создавать в вызывающем методе, который заполняет? 3) Создавать ннепосредственно в методе. Как про этом они будут вести себя в памяти? Как я понимаю, если создавать как поля класса, они будут в памяти все время существования класса, а если в методе, то они уничтожаться после выхода из медота. Вопрос не конкретно про базы данных, а интересует компетентная точка зрения на проблему в целом: когда и как правельней создавать обекты в памяти Спасибо. Буду рад комментариям.Извеняюсь за неточности в терминологии) P.S Для примера мой код
|
| Автор: Dblma 13.3.2008, 10:25 | ||
| В любом варианте нельзя точно сказать, когда именно уничтожится объект из кучи (любой, не только DBConnector). Этом решает Сборщик мусора (GC). В любом случае, не ранее, чем GC не сможет составить путь в графе ссылок к объекту. Т.е. если сделать DBConnector членом класса, то он уничтожится не ранее, чем мы потеряем ссылку на объект класса, в котором он содержится. А если DBConnector создавать внутри метода - то ссылка (как локальная переменная) потеряется при выходе из метода. Где и как держать объект DBConnector (и др.) - зависит от того, как этот объект будет использоваться. Если постоянно - то создаём член класса (возможно даже статический). Если DBConnector (и др.) нужен всего 1 раз, то лучше создавать локально внутри метода и внутри директивы using. Вот так:
Это гарантирует, что при выходе из блока using вызовется Dispose для cforEdit (что, в общем, не освободит память этого объекта, а только закроет соединение и освободит все ресурсы). |