Посмотрите на этот код:
dic:=TObjectDictionary<Integer, TObject>.Create([doOwnsValues]);
testObject:=TObject.Create;
dic.AddOrSetValue(1,testObject);
dic.AddOrSetValue(1,testObject);
Код
Удивительно то, что объект освобождается, когда вы добавляете его во второй раз.
Это предполагаемое поведение? Или ошибка в библиотеках Delphi?
В документации просто говорится: «Если объект принадлежит владельцу, когда запись удаляется из словаря, ключ и / или значение освобождаются». Поэтому кажется немного странным Освободить объект, который я только что попросил добавить!
Есть ли способ запретить TObjectDictionary этого делать? В настоящее время каждый раз, когда я добавляю значение, я должен сначала проверить, есть ли эта комбинация ключ-значение уже в Словаре.
Delphi 2010
[РЕДАКТИРОВАТЬ: После прочтения всех комментариев:
Мои выводы (чего они стоят)]
[/ EDIT]