Мне, конечно, кажется, что ваш последний блок кода не нужен. Если begin != null
, то ваш while
цикл должен был продолжаться, нет?
ОБНОВЛЕНИЕ : Похоже, вы пытаетесь убедиться, что последнее полученное значение для begin
удаляется в случае возникновения исключения. Попробуйте это:
MyObject begin = GetFirst();
while (begin != null)
{
MyObject next;
using (begin)
{
next = begin.Next();
// do something with begin
}
begin = next;
}
Обратите внимание, что в приведенном выше предложении на самом деле может все же случиться, что вы в конечном итоге получите неразмещенный объект: последнее значение, присвоенное next
, до конца блока using
. Этот сценарий не был рассмотрен в вашем первоначальном вопросе, поэтому я не рассмотрел его в приведенном выше предложении. Это то, что следует учитывать, если это потенциальная проблема.