Response.Close()和Response.Dispose()有什么区别?

Xaq*_*ron 3 c# dispose response

从资源清理的角度看,为什么有Response.Close()Response.Dispose(),哪一个更全面的(调用另一个)?

Mar*_*ers 7

这两种方法都提供了Dispose应该调用的实现Close.它是使用using语句,以确保一个不错的主意Dispose,因此Close被调用,即使是一个例外.

换句话说,这样做:

using (Response response = ...)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

不是这个:

Response response = ...;
// ...
response.Close(); // If there is an exception this might never get called!
Run Code Online (Sandbox Code Playgroud)

关闭和处理对象之间的一个区别是,当你处置一个对象时,通常不可能再使用该对象(尝试这样做可能会导致抛出ObjectDisposedException),但是在调用Close之后它仍然可能仍然存在使用该对象.

请注意,如果您正在讨论ASP.NET,那么通常不应该在Response对象上调用Close或Dispose.