


Pourquoi ObservableCollection n'a-t-il pas de méthode AddRange et comment puis-je en ajouter une ?
Jan 20, 2025 am 07:07 AMFonctionnalité AddRange manquante d'ObservableCollection et solution de contournement
La norme ObservableCollection
dans .NET n'inclut pas de méthode AddRange
pour ajouter plusieurs éléments simultanément. Cette limitation peut être lourde lorsqu'il s'agit de grands ensembles de données ou du remplacement de l'intégralité de la collection.
Création d'une collection ObservableRangeCollection personnalisée
Pour résoudre ce problème, nous pouvons créer une classe ObservableRangeCollection
personnalisée étendant ObservableCollection
et incorporant la fonctionnalité AddRange
souhaitée. Voici comment implémenter cela en C# et VB.NET :
Implémentation 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)); } } }
Implémentation 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
Utilisation de la collection personnalisée :
Après avoir créé la classe ObservableRangeCollection
, vous pouvez l'utiliser de la même manière qu'une classe ObservableCollection
standard, mais maintenant avec la méthode AddRange
ajoutée :
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})
Étendre davantage les fonctionnalités
Cette collection personnalisée peut être encore améliorée en ajoutant des méthodes telles que RemoveRange
, Replace
et ReplaceRange
pour fournir des capacités de gestion de collection encore plus complètes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Gulc: Cibliothèque C construite à partir de zéro

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Utilisation distincte et partage de phrases

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?
