В чем будет разница между созданием экземпляра формы и назначением переменной по сравнению с простым созданием экземпляра? - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть форма окна, в которой нет событий или свойств, к которым я хочу обратиться от владельца. Я могу открыть форму двумя способами:

frmExample ex = new frmExample();
ex.ShowDialog(this);

и

(new frmExample()).ShowDialog(this);

Будут ли различия в распределении памяти и тому подобное? Есть ли какие-то последствия, плюсы и минусы? Лично я, возможно, наивно предпочитаю второй подход.

Спасибо

1 Ответ

2 голосов
/ 14 ноября 2011

Одно большое отличие состоит в том, что вы не сможете удалить () экземпляр формы.Вы должны утилизировать , а не автоматически при вызове ShowDialog (), только при вызове Show ().Код Boilerplate:

using (var dlg = new frmExample()) {
    if (dlg.ShowDialog() == DialogResult.Ok) {
        // Access dlg properties
        //...
    }
}

Возможно, из этого фрагмента видно, почему форма не удаляется автоматически.Это может привести к генерации ObjectDisposedException при доступе к свойствам.Вы должны утилизировать его самостоятельно после доступа к свойствам.Оператор using делает его автоматическим и безопасным для исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...