给出以下示例代码:
var count = 0;
while (count < 5)
{
using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri))
using (var response = await StaticHttpClient.Client.SendAsync(request))
{
if (!response.IsSuccessStatusCode)
{
switch ((int)response.StatusCode)
{
case 500:
case 504:
continue;
}
}
else
{ ... }
}
count++;
}
这些IDisposable对象会在此方法中泄漏内存,还是会正确调用Dispose方法? (交换机中缺少许多情况,我并不关心那里的效率。)
答案 0 :(得分:6)
这些IDisposable对象会在此方法中泄漏内存,还是会正确调用Dispose方法?
自从您使用Dispose()
语句后,一次性用品将被正确调用using
。当您continue
时,Dispose()
方法将在循环的下一次迭代之前被调用。
答案 1 :(得分:1)
使用语句将始终调用Dispose()这是使用它的全部要点