我有一個使用一些底層的本地資源,並有一個指針指向下一個實例,這是我通過類似迭代的一個對象:如何處理通過其Next屬性迭代的對象?
MyObject begin = null;
try
{
begin = GetFirst();
while (begin != null)
{
MyObject next = begin.Next();
// do something with begin
begin.Dispose();
begin = next;
}
}
finally
{
if (begin != null)
{
begin.Dispose();
}
}
我得到的代碼分析問題:
CA2202 :Microsoft.Usage:Object'begin'可以在方法'x()'中多次處理。爲避免生成System.ObjectDisposedException,您不應該在對象上多次調用Dispose。
任何想法如何擺脫這個錯誤,而不是壓制它?
在'begin.Dispose()'行後面緊挨着一個'begin = null;'是否需要處理? – kbrimington 2010-09-01 23:36:00
@kbrimington:不,那是我的第一個想法。沒有運氣:( – esac 2010-09-01 23:41:25
我會考慮整個迭代過程是否可以封裝在一些更高級別的生成器類中,然後在生成元素的整個結果後負責清理。 – 2010-09-02 01:37:50