0

クラスに 2 つのリストがあり、2 つのリストの組み合わせである ReadOnlyCollectoin としてもう 1 つのリストを公開したいと考えています。

これを達成するための最良の方法を探しています。これまでのところ、私には2つのオプションがあります

オプション1

   public ReadOnlyCollection<Item> AllItems
    {
        get
        {
            var list = new List<Item>();
            list.AddRange(List1);
            list.AddRange(List2);
            return list.AsReadOnly();

        }
    }

オプション #2

私の 2 つのリストを ObservableCollections にし、それらが変更されるたびに、3 番目のプライベート リストを変更します。次に、3 番目のリストを ReadOnlyCollection として公開します。

ここで些細なことを見逃しているかもしれません。これを達成するためのより良い方法が必要です。

4

3 に答える 3

2

アプリケーションで AllItems が呼び出される頻度と、これら 2 つのリストのサイズによって異なります。

これらが小規模なセットであり、AllItems がほとんど呼び出されない場合は、Option1 で十分です。

これらのリストが急速に成長し、AllItems が頻繁に使用される場合は、オプション 2 が最適なオプションです。

于 2012-04-27T14:31:09.937 に答える
1

あなたのオプション#1は私にとって良い解決策のようです。

あなたに欠けている「些細なこと」はありません。

于 2012-04-27T14:26:41.483 に答える
0

IList を実装して List1.Concat(List2) にアクセスすることにより、リストのコピーを作成しない独自のバージョンの ReadOnlyCollection を作成できます。ただし、これはあなたの目的にとってはやり過ぎかもしれません。

于 2012-04-27T14:36:41.967 に答える