Подтвердить что ты не робот

С#: "использование" при создании формы?

Я смотрю код С#, написанный кем-то другим. Всякий раз, когда форма создается, а затем отображается, выполняется следующее. Это верно? Почему вы используете "использование" в этом контексте?

MyForm f;
using (f = new MyForm())
{
    f.ShowDialog();
}

Дополнительный вопрос:

Можно ли заменить следующий код?

using (MyForm f = new MyForm())
{
    f.ShowDialog();
}
4b9b3361

Ответ 1

A Form в WinForms реализует шаблон IDisposable (он наследует IDisposable от Component. Исходный автор правильно гарантирует, что значение будет выбрано с помощью оператора using.

Ответ 2

Это ограничивает ресурсы, хранящиеся объектом myForm f, в блоке использования. Его метод Dispose будет вызываться, когда выйдет блок, и в это время он будет "удален". Поэтому любые ресурсы, которые он держит, будут детерминистически очищены. Кроме того, f не может быть изменен для ссылки на другой объект в блоке использования. Для получения дополнительной информации см. Информацию об использовании в MSDN:


используя ссылку С#

Ответ 3

Может быть. Если MyForm реализует IDisposable, это гарантирует, что вызывается метод Dispose, если в вызове ShowDialog вызывается исключение.

В противном случае использование не требуется, если вы не захотите немедленно принудительно удалить

Ответ 4

Да, это "правильное" использование IDisposable. Возможно, у автора MyForm был какой-то большой объект (скажем, большой MemoryStream) или файловый ресурс (например, открытый FileStream), который он открывал, и хотел убедиться, что он был выпущен как можно скорее. В этом случае было бы полезно вызвать MyForm ctor внутри оператора using.

Вопрос 2:

в С# 3.0+, вы можете использовать более короткие (и точно так же ясно):

используя (var f = new MyForm())