Re: Дубликаты
От: Qbit86 Кипр
Дата: 24.11.11 18:17
Оценка:
Здравствуйте, 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>, представляющий из себя не копию передаваемой в конструктор коллекции, а декоратор.
Глаза у меня добрые, но рубашка — смирительная!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.