


Warum verfügt ObservableCollection nicht über eine AddRange-Methode und wie kann ich eine hinzufügen?
Jan 20, 2025 am 07:07 AMDie 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:
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-Implementierung:
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
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:
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})
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

eindeutiger Gebrauch und Phrasenfreigabe

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
