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
Lepaskan: 2025-01-20 07:07:12
asal
961 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
<code class="language-vb.net">Dim myCollection As New ObservableRangeCollection(Of Integer)()
myCollection.AddRange({1, 2, 3, 4, 5})</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan