是否有必要在静态方法的 finally 块中处理变量?
Is it necessary to dispose variables in finally block in static methods?
下面这个例子是我在寻找另一个问题的答案时发现的。
在这里,那个家伙在 finally 块中处理 response
。
真的有必要吗?在这种情况下是 GC 的工作吗?
public static async Task EnsureSuccessStatusCodeAsync(this HttpResponseMessage response)
{
try
{
if (response.IsSuccessStatusCode)
return;
var content = await response.Content.ReadAsStringAsync();
throw new SimpleHttpResponseException(response.StatusCode, content);
}
finally
{
response.Content?.Dispose();
}
}
使用 IDisposable
的整个 点 是清理 GC 可以清理的 非托管 资源't 自行清理。所以不,你不能让 GC 清理它,因为根据定义,它不能。
下面这个例子是我在寻找另一个问题的答案时发现的。
在这里,那个家伙在 finally 块中处理 response
。
真的有必要吗?在这种情况下是 GC 的工作吗?
public static async Task EnsureSuccessStatusCodeAsync(this HttpResponseMessage response)
{
try
{
if (response.IsSuccessStatusCode)
return;
var content = await response.Content.ReadAsStringAsync();
throw new SimpleHttpResponseException(response.StatusCode, content);
}
finally
{
response.Content?.Dispose();
}
}
使用 IDisposable
的整个 点 是清理 GC 可以清理的 非托管 资源't 自行清理。所以不,你不能让 GC 清理它,因为根据定义,它不能。