Нужно ли освобождать перечислитель, возвращаемый GetEnumerator?

Я хочу использовать перечислитель для универсальной коллекции с Delphi XE2. Мне интересно, кому принадлежит TEnumerator, возвращаемый функцией GetEnumerator (в документации я не нашел четкого ответа):

  • Являюсь ли он владельцем и должен ли он освобождаться после использования?
  • Или он принадлежит коллекции, а я не не нужно заботиться о его выпуске?

Код:

procedure Test;
var
  myDictionary: TDictionary<String, String>;
  myEnum: TDictionary<String, String>.TPairEnumerator;
begin
  { Create a dictionary }
  myDictionary := TDictionary<String, String>.Create;
  myDictionary.Add('Key1', 'Value 1');
  myDictionary.Add('Key2', 'Value 2');

  { Use an enumerator }
  myEnum := myDictionary.GetEnumerator;
  // ... do something with the Enumerator ...

  { Release objects }
  myEnum.Free; // ** Do I need to free the enumerator? **
  myDictionary.Free;          
end;
6
задан Name 19 March 2012 в 16:14
поделиться