ホームページ > バックエンド開発 > C++ > ObservableCollection に AddRange メソッドがないのはなぜですか? 追加するにはどうすればよいですか?

ObservableCollection に AddRange メソッドがないのはなぜですか? 追加するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-20 07:07:12
オリジナル
962 人が閲覧しました

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

ObservableCollection に欠けている AddRange 機能と回避策

.NET の標準の ObservableCollection には、複数の項目を同時に追加するための AddRange メソッドが含まれていません。この制限は、大規模なデータセットを扱う場合やコレクション全体を置き換える場合に面倒になる可能性があります。

カスタム ObservableRangeCollection の作成

これに対処するには、ObservableRangeCollection を拡張し、必要な ObservableCollection 機能を組み込んだカスタム AddRange クラスを構築します。 これを C# と VB.NET で実装する方法は次のとおりです:

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>
ログイン後にコピー

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>
ログイン後にコピー

カスタム コレクションの使用:

ObservableRangeCollection クラスを作成した後は、標準の ObservableCollection と同様に使用できますが、AddRange メソッドが追加されています。

<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>
ログイン後にコピー

機能をさらに拡張

このカスタム コレクションは、RemoveRangeReplaceReplaceRange などのメソッドを追加することでさらに強化され、より包括的なコレクション管理機能を提供できます。

以上がObservableCollection に AddRange メソッドがないのはなぜですか? 追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート