Но реализация не масштабируется, она медленная, она ужасно работает с большими списками. Если ваш тип элемента поддерживает INotifyPropertyChanged, каждый раз, когда один из этих элементов вызывает событие измененного свойства, обходится весь список, чтобы получить индекс в списке элемента, вызвавшего событие! Я был в шоке, когда впервые понял это. Вы видите, что BindingList действительно является довольно тонкой оболочкой для Collection, поэтому метаданные, связанные с каждой записью, не связаны, вся привязка события PropertyChanged элемента направлена на один обработчик, и все, что ему дают, - это источник и имя. измененного свойства, поэтому невозможно включить параметр NewIndex в ListChangedEventArgs без выполнения поиска. (По умолчанию этот поиск даже использует компаратор объектов по умолчанию, поэтому, если в вашем списке два разных, но иногда равных объекта, наслаждайтесь результатами…)
Еще одно замечание - AddNew, другая функция, которую имеет BindingList, которой нет в Collection - также не масштабируется. Он должен использовать IndexOf, чтобы выяснить, где в списке оказался добавленный элемент, в случае необходимости отмены добавления, поскольку он поддерживает автоматическую сортировку в производных типах. (BindingList не поддерживает автоматическую сортировку ...)