ObservableCollection <> 대 목록 <>
List<>
여기에 중첩 된 많이 있습니다.
예를 들어, 내가 가진 BaseEntity
이있는 List<ColumnEntity>
. ColumnEntity
클래스 List<Info>
등이 있습니다.
WPF UI 로 작업하고 모든 .NET Framework 목록의 모든 변경 사항을 추적해야합니다 BaseEntity
. new ObservableCollection
필요한 목록을 기반으로 인스턴스화하고 해당 ObservableCollection
.
이 모든 중첩 Lists
을 변경하는 장단점은 ObservableCollections
무엇입니까? 따라서 각 BaseEntity
목록 BaseEntity
을 수정 된 경계에 다시 할당하지 모든 변경 사항을 추적 할 수 있습니다 ObservableCollection
.
에 방법 List
이 사용하지 않는다고 가정합니다 .
질문은 목록 흥미로운과 ObservableCollection
구현 모두 IList<T>
차이가 많지 않다는 점을 고려할 때 WPF 바인딩 할 수를있는 인터페이스 ObservableCollection
도 계명 구현 INotifyCollectionChanged
합니다.
주요 차이점 중 하나 ObservableCollection
는 AddRange
방법 이있는 것 입니다.
또한 ObservableCollection
내가 약속 력이없는 것을 알고있는 장소에 사용하지 않을 것입니다. 올바른 접근 방식을 확인하고 확인하는 것이 중요합니다.
Collection<T>
와 사이 의 차이점에있는는 List<T>
여기에서 일반 목록과 컬렉션을 볼 수 있습니다.
정확히 무엇을 의미하는지에 따라 정확히.
모든 BaseEntity 목록의 모든 변경 사항을 추적해야합니다.
이미 목록에있는 개체의 변경 사항을 추적하는 개체의 변경 사항을 추적하는 개체의 변경 사항을? 아니면 개체가 목록에서 제거 / 추가 / 변경되는시기를 제거합니까?
목록에 전체 수명 동안 동일한 항목이 포함되지만 해당 목록 내의 개별 개체가 변경되는 경우 개체 만 변경 알림 (일반적으로를 통해 INotifyPropertyChanged
) 발생시키는을 List<T>
것으로 충분 하며 충분합니다. 그러나 목록에 수시로 다른 개체가 포함 된 순서가 변경 ObservableCollection<T>
됩니다.
따라서 차이점이 흥미로울 수 있지만 (이전 포스터에서 이미이를 다루었 음)으로 필요 일반적 ObservableCollection<T>
하거나 필요 하지 않은 선택의 여지 가 많지 않습니다.
목록은 강화로 액세스 할 수있는 강력한 형식의 개체 목록을 나타냅니다. 목록을 검색, 정렬 및 조작하는 방법을 제공합니다. List 클래스는 ArrayList 클래스에 해당하는 일반적인 클래스입니다. 필요에 따라 크기가 동적으로 증가하는 배열을 사용하여 IList 제네릭 인터페이스를 구현합니다.
ObservableCollection은 항목이 추가, 제거되거나 전체 컬렉션이 새로 고쳐질 때 알림을 제공하기 위해 "INotifyCollectionChanged"인터페이스를 사용하는 일반적인 동적 데이터 컬렉션입니다.
이 링크에서 자세한 내용을 읽어 오기 : http://www.codeproject.com/Articles/42536/List-vs-ObservableCollection-vs-INotifyPropertyCha
한 가지 더 중요한 차이점은 ObservableCollection이 생성 된 것에서 만 액세스 할 수 있고 여기서 액세스 할 수있는 것입니다.
매우 미미한 성능 오버 헤드 외에는 문제가 없습니다.
내부 목록을 직접 수정하는 경우 변경 사항에 대한 알림이 표시되지 않습니다. 또한 ObservableCollection에 포함 된 개체가 수정 될 알림을받지 않습니다. 요소가 추가, 교체, 제거 또는 이동 된 경우에만 알림이 발생합니다.
참고 URL : https://stackoverflow.com/questions/4196968/observablecollection-vs-list
'ProgramingTip' 카테고리의 다른 글
SQL 만 사용하여 SQL Server 2005 이미지 필드에 그림 삽입 (0) | 2020.11.01 |
---|---|
http를 통해 파일에 대한 직접 액세스를 차단하지만 PHP 펼쳐 액세스는 허용 (0) | 2020.11.01 |
SQL Server ORDER BY 날짜 및 마지막 null (0) | 2020.11.01 |
MongoDB는 _id 배열에서 어디를 선택합니까? (0) | 2020.11.01 |
C ++ 함수 템플릿 부분 전문화? (0) | 2020.11.01 |