Вы можете сделать следующее.
foreach (ManagementObject result in results)
{
using (result)
{
// Your code goes here.
}
}
Отличительной особенностью C # является то, как различные языковые конструкции могут совместно использовать блоки кода области. Это означает, что вы можете сделать следующее, чтобы устранить вложение.
foreach (ManagementObject result in results) using (result)
{
// Your code goes here.
}
Также полезно знать, что конструкция foreach
также вызовет Dispose
для цели IEnumerator
. Код выше будет эквивалентен.
IEnumerator enumerator = results.GetEnumerator()
try
{
while (enumerator.MoveNext())
{
ManagementObject result = (ManagementObject)enumerator.Current;
IDisposable disposable = (IDisposable)result;
try
{
// Your code goes here.
}
finally
{
disposable.Dispose();
}
}
}
finally
{
IDisposable disposable = enumerator as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}