Heim >Backend-Entwicklung >C++ >Warum verfügt ObservableCollection nicht über eine AddRange-Methode und wie kann ich eine hinzufügen?
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!