首頁 > 後端開發 > C++ > 為什麼 ObservableCollection 沒有 AddRange 方法,如何加入?

為什麼 ObservableCollection 沒有 AddRange 方法,如何加入?

Mary-Kate Olsen
發布: 2025-01-20 07:07:12
原創
1014 人瀏覽過

Why Doesn't ObservableCollection Have an AddRange Method, and How Can I Add One?

ObservableCollection 缺少的 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})
登入後複製

進一步擴充功能

可以透過新增 RemoveRangeReplaceReplaceRange 等方法進一步增強此自訂集合,以提供更全面的集合管理功能。

以上是為什麼 ObservableCollection 沒有 AddRange 方法,如何加入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板