Phương thức này có thể xóa tất cả các mục mà bạn có thể sử dụng thay thế.
Nếu tôi đã phải đánh bạo đoán là tại sao họ đã sử dụng Clear
thay vì RemoveAll
, tôi nghĩ rằng nó sẽ là vì RemoveAll
mang ý kiến cho rằng bạn đang xóa mục từ bộ sưu tập, trong khi Clear
cho bạn biết các mục được chỉ đơn giản là bị xóa .
Điều này tạo sự khác biệt về loại thông báo CollectionChanged
được nêu lên. Clear()
đặt ra sự kiện NotifyCollectionChangedAction.Clear
và không bao gồm các mục đã xóa trong sự kiện, trong khi Remove
tăng sự kiện NotifyCollectionChangedAction.Removed
và chuyển mục đã xóa cho sự kiện.
You cannot raise a CollectionChanged
event with multiple items, vì vậy, hãy tăng sự kiện NotifyCollectionChangedAction.Removed
với tất cả các mục đã xóa sẽ ném một ngoại lệ. Cách khác là tăng sự kiện CollectionChanged
cho mọi mục đã bị xóa, điều này có thể khá tệ đối với hiệu suất. Và chỉ đơn giản là nâng cao sự kiện NotifyCollectionChangedAction.Reset
sẽ gây ra một số nhầm lẫn khi người dùng mong đợi sự kiện Removed
xảy ra khi họ xóa các mục.
Vì vậy, tôi đoán họ đã quyết định chỉ cần sử dụng .Clear()
thay vì .RemoveAll()
vì tên là mô tả tốt hơn về những gì thực sự xảy ra phía sau hậu trường.
Bạn đã xem phương thức Clear() chưa? (http://msdn.microsoft.com/en-us/library/ms132405.aspx) – Eirik
Nó có phương thức Clear(), loại bỏ tất cả các phần tử trong Bộ sưu tập. – Dante
Vâng, phương thức RemoveAll() không nhằm xóa bộ sưu tập. Ngay cả Danh sách cũng có phương thức Clear(). Nó được thiết kế để loại bỏ tất cả các mục phù hợp với một tiêu chí nhất định. –