Что определяет, могу ли я использовать объект с помощью функции using? - PullRequest
2 голосов
/ 17 декабря 2010

Например:

using (disposable object here)
{

}

Что определяет, могу ли я использовать объект таким образом?

Будет ли это работать правильно?

using (WebClient webClient = new WebClient())
{

}

Ответы [ 4 ]

7 голосов
/ 17 декабря 2010

Для использования в операторе с использованием класс должен реализовать интерфейс IDisposable .

В вашем примере WebClient происходит от Компонента , который реализует IDisposable, поэтому он действительно будет работать.

1 голос
/ 17 декабря 2010

Объект, представленный в операторе using, должен реализовывать интерфейс IDisposable.

Этот интерфейс предоставляет метод Dispose, который должен высвобождать ресурсы объекта.

Ссылка: http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.80).aspx

1 голос
/ 17 декабря 2010

Вы можете использовать его, если класс реализует интерфейс IDisposable .Это ключевое слово - просто синтаксический сахар для автоматического вызова метода объекта IDisposable.Dispose() после блока using.

Метод Dispose():

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

0 голосов
/ 17 декабря 2010

Работает, если объект реализует IDisposable.

WebClient наследуется от Component, который реализует IDisposable, поэтому ваш код должен работать.

Если это не сработало, вы должны получить ошибку во время компиляции.

...