Здравствуйте, AndrewDenison, Вы писали:
AD>копирует содержимое списка в коллекцию при этом создавая дубликаты строк.
Дубликаты ссылочных типов, разумеется, не создаются. Это легко проверить, запихивая в исходную коллекцию какой-нибудь изменяемый класс (каковым строки в .NET не являются), например:
IList<StringBuilder> list = new List<StringBuilder>
{
new StringBuilder("Foo"),
new StringBuilder("Bar"),
new StringBuilder("Qux"),
};
ObservableCollection<StringBuilder> col = new ObservableCollection<StringBuilder>(list);
list[0].Replace('F', 'D');
Console.WriteLine(col[0]);
Другое дело, что создаётся дубликат
коллекции. То есть, изменение
элементов в list (если бы строки были изменяемыми) — а не
ссылок на эти элементы! — отразится и при проходе по коллекции col. Но изменение структуры исходной или целевой коллекции (вставка, удаление, etc) не отразится на другой.
В библиотеке
Elevate вроде был аналог ObservableCollection<T>, представляющий из себя не копию передаваемой в конструктор коллекции, а декоратор.