Эти две альтернативы не делают то же самое. Вы выбираете между этими двумя вариантами:
- свойство списка реализацией
INotifyPropertyChanged
, где вы бросаете это событие каждый раз, когда список модифицируется
- свойства типа
ObservableCollection
С опцией 1, когда вы изменяете список, возникает событие, в котором говорится, что «весь список изменился». Если у вас есть элемент пользовательского интерфейса, связанный с этим списком (скажем, ListBox
), элемент всего необходимо будет перерисовать, поскольку он должен предположить, что весь список был изменен (то есть: он больше не может быть тот же список!).
С помощью опции 2 вы поднимаете конкретные события о отдельных элементах, которые были добавлены или удалены в списке. Если у вас есть элемент пользовательского интерфейса, связанный с этим списком, он может отвечать только путем изменения пользовательского интерфейса, который имеет отношение к этим элементам.
Рассмотрите пример, когда вы удаляете элемент из своего списка, а список привязан к элементу управления WPF ListBox
. С помощью опции 1 все содержимое списка воссоздается. С помощью опции 2 элемент удаленного элемента удаляется, а остальная часть списка остается нетронутой.
должен быть ясен из этого примера, что ObservableCollection
- поскольку он поддерживает событие, которое конкретные к тому, что вы делаете - будет более эффективным во многих случаях. Тем не менее, если у вас нет большого количества данных в коллекции или очень сложного пользовательского интерфейса, прирост производительности будет незначительным. Кроме того, если вы вносите большие изменения в свой список, вы вполне можете обнаружить, что быстрее обновить весь список.
В конечном счете, на вопрос о производительности нельзя точно ответить на StackOverflow без повторения мантры: профиль вашего кода и принять решение на основе результатов.
Почему бы не просто написать код, используя тот, который лучше всего подходит для вашего дизайна? Подумав об этом сейчас, вы не концентрируетесь на проблеме. –
Ну, у обоих есть один и тот же дизайн, это список String или oobservable коллекции строки, мой вопрос не о дизайне, но производительность – user2417992
@ user2417992 сделать тест тогда :) –