Heim >Backend-Entwicklung >C++ >Warum verfügt ObservableCollection nicht über eine AddRange-Methode und wie kann ich eine hinzufügen?

Warum verfügt ObservableCollection nicht über eine AddRange-Methode und wie kann ich eine hinzufügen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-20 07:07:12985Durchsuche

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

Die fehlende AddRange-Funktionalität von ObservableCollection und eine Problemumgehung

Der Standard ObservableCollection in .NET enthält keine AddRange-Methode zum gleichzeitigen Hinzufügen mehrerer Elemente. Diese Einschränkung kann beim Umgang mit großen Datensätzen oder beim Ersetzen der gesamten Sammlung umständlich sein.

Erstellen einer benutzerdefinierten ObservableRangeCollection

Um dieses Problem zu lösen, können wir eine benutzerdefinierte ObservableRangeCollection Klasse erstellen, die ObservableCollection erweitert und die gewünschte AddRange Funktionalität enthält. So implementieren Sie dies in C# und VB.NET:

C#-Implementierung:

<code class="language-csharp">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));
        }
    }
}</code>

VB.NET-Implementierung:

<code class="language-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</code>

Verwendung der benutzerdefinierten Sammlung:

Nachdem Sie die ObservableRangeCollection-Klasse erstellt haben, können Sie sie ähnlich wie eine Standard-ObservableCollection-Klasse verwenden, jetzt jedoch mit der hinzugefügten AddRange-Methode:

<code class="language-csharp">var myCollection = new ObservableRangeCollection<int>();
myCollection.AddRange(new[] { 1, 2, 3, 4, 5 });</code>
<code class="language-vb.net">Dim myCollection As New ObservableRangeCollection(Of Integer)()
myCollection.AddRange({1, 2, 3, 4, 5})</code>

Funktionalität weiter erweitern

Diese benutzerdefinierte Sammlung kann durch Hinzufügen von Methoden wie RemoveRange, Replace und ReplaceRange weiter verbessert werden, um noch umfassendere Sammlungsverwaltungsfunktionen bereitzustellen.

Das obige ist der detaillierte Inhalt vonWarum verfügt ObservableCollection nicht über eine AddRange-Methode und wie kann ich eine hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn