Мы обычно переносим IDisposable
в using
, чтобы гарантировали , что экземпляр (т. Е. неуправляемые ресурсы ) будет утилизирован дождьили сиять .Если вы хотите объявить Image
вне внутреннего цикла:
for (int i = 0; i < 10; i++)
{
using (Image imgInput = new Image())
{
for (int j = 0; j < 100; j++)
{
...
// In all these cases the resource will be correctly released:
if (someCondition1)
break;
...
if (someCondition2)
return;
...
if (someCondition3)
throw new SomeException(...);
...
// Here is a code to use my image
}
}
}
Вот почему мы не должны вызывать Dispose
явно .Обратите внимание, что предоставленные вами оба фрагмента кода приведут к утечке ресурсов в случае someCondition2
или someCondition3
.
Та же схема, если вы хотите объявить Image
внутри вложенного цикла:
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 100; j++)
{
using (Image imgInput = new Image())
{
// Here is a code to use my image
}
}
}