為什麼 ObservableCollection 沒有 AddRange 方法,如何加入?
Jan 20, 2025 am 07:07 AMObservableCollection 缺少的 AddRange 功能與解決方法
.NET 中的標準 ObservableCollection
不包含用於同時新增多個項目的 AddRange
方法。在處理大型資料集或替換整個集合時,此限制可能會很麻煩。
建立自訂 ObservableRangeCollection
為了解決這個問題,我們可以建立一個自訂 ObservableRangeCollection
類,擴展 ObservableCollection
並合併所需的 AddRange
功能。 以下是如何在 C# 和 VB.NET 中實現此功能:
C# 實作:
using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; namespace CustomCollections { public class ObservableRangeCollection<T> : ObservableCollection<T> { public void AddRange(IEnumerable<T> collection) { if (collection == null) throw new ArgumentNullException(nameof(collection)); foreach (var item in collection) { Items.Add(item); } OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } } }
登入後複製
VB.NET 實作:
Imports System.Collections.Generic Imports System.Collections.ObjectModel Imports System.ComponentModel Namespace CustomCollections Public Class ObservableRangeCollection(Of T) Inherits ObservableCollection(Of T) Public Sub AddRange(collection As IEnumerable(Of T)) If collection Is Nothing Then Throw New ArgumentNullException(NameOf(collection)) For Each item In collection Items.Add(item) Next OnCollectionChanged(New NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)) End Sub End Class End Namespace
登入後複製
利用自訂集合:
建立 ObservableRangeCollection
類別後,您可以像標準 ObservableCollection
一樣使用它,但現在新增了 AddRange
方法:
var myCollection = new ObservableRangeCollection<int>(); myCollection.AddRange(new[] { 1, 2, 3, 4, 5 });
登入後複製
Dim myCollection As New ObservableRangeCollection(Of Integer)() myCollection.AddRange({1, 2, 3, 4, 5})
登入後複製
進一步擴充功能
可以透過新增 RemoveRange
、Replace
和 ReplaceRange
等方法進一步增強此自訂集合,以提供更全面的集合管理功能。
以上是為什麼 ObservableCollection 沒有 AddRange 方法,如何加入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)