Закрывает ли FtpWebResponse IDisposable ответ?

Я использую в своей программе следующий код, нужно ли мне вызывать response.close()? Или реализация FtpWebResponse IDisposable закрывает ответ?

using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{

}

В общем, нужно ли мне это делать?

using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
    response.close();
}

person naed21    schedule 24.10.2013    source источник
comment
Спросите себя, будет ли мне дороже, если метод close будет вызываться дважды?   -  person Izikon    schedule 24.10.2013
comment
@Izikon Было бы так? Насколько я знаю, все мое приложение вылетело бы, если бы я это сделал. Возможно, вы могли бы быть более конкретными, вместо того чтобы задавать вопрос.   -  person naed21    schedule 24.10.2013
comment
Интересно прочитать этот вопрос: stackoverflow.com/questions/3119288/   -  person Habib    schedule 24.10.2013


Ответы (1)


Нет, вам не нужно звонить Close, поскольку Dispose уже делает это. FtpWebResponse унаследован от WebResponse и явно реализовал Dispose, который внутренне вызывает Close.

Код для WebResponse.cs из: http://www.dotnetframework.org/default.aspx/4@0/4@0/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/fx/src/Net/System/Net/WebResponse@cs/1305376/WebResponse@cs

 /// <internalonly>
        void IDisposable.Dispose() {
            try
            {
                Close();
                OnDispose();
            }
            catch { }
        }
person Habib    schedule 24.10.2013