Rumah >pembangunan bahagian belakang >C++ >Mengapa ObservableCollection Tidak Mempunyai Kaedah AddRange, dan Bagaimana Saya Boleh Menambahkannya?

Mengapa ObservableCollection Tidak Mempunyai Kaedah AddRange, dan Bagaimana Saya Boleh Menambahkannya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-20 07:07:12982semak imbas

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

Kefungsian AddRange yang Hilang dan Penyelesaian ObservableCollection

Standard ObservableCollection dalam .NET tidak termasuk kaedah AddRange untuk menambah berbilang item secara serentak. Had ini boleh menyusahkan apabila berurusan dengan set data yang besar atau menggantikan keseluruhan koleksi.

Mencipta Custom ObservableRangeCollection

Untuk menangani perkara ini, kami boleh membina kelas ObservableRangeCollection tersuai yang memanjangkan ObservableCollection dan menggabungkan fungsi AddRange yang diingini. Begini cara untuk melaksanakan ini dalam C# dan VB.NET:

Pelaksanaan C#:

<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>

Pelaksanaan VB.NET:

<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>

Menggunakan Koleksi Tersuai:

Selepas mencipta kelas ObservableRangeCollection, anda boleh menggunakannya sama seperti ObservableCollection standard, tetapi kini dengan kaedah AddRange tambahan:

<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>

Memperluaskan Fungsi Lebih Lanjut

Koleksi tersuai ini boleh dipertingkatkan lagi dengan menambahkan kaedah seperti RemoveRange, Replace dan ReplaceRange untuk menyediakan keupayaan pengurusan koleksi yang lebih komprehensif.

Atas ialah kandungan terperinci Mengapa ObservableCollection Tidak Mempunyai Kaedah AddRange, dan Bagaimana Saya Boleh Menambahkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn