ReadOnlyList作为两个列表的组合

时间:2012-04-27 14:24:52

标签: c#

我的课程中有两个列表,我想再将一个列表公开为ReadOnlyCollectoin,它是两个列表的组合。

我正在寻找实现这一目标的最佳方式。到目前为止,我有两个选择

选项#1

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

        }
    }

选项#2

使我的两个列表ObservableCollections并且每次修改它们时,修改第三个私有列表。 然后将第三个列表公开为ReadOnlyCollection。

这可能是我在这里遗漏了一些小事。必须有更好的方法来实现这一目标。

3 个答案:

答案 0 :(得分:2)

取决于在您的应用程序中调用AllItems的频率以及这两个列表的大小。

如果那些是小集合并且很少调用AllItems,那么Option1就足够了。

如果这些列表快速增长并且经常使用AllItems,则option2是最佳选择。

答案 1 :(得分:1)

你的选择#1看起来对我很好。

你没有“失去一些琐事”。

答案 2 :(得分:0)

您可以编写自己的ReadOnlyCollection版本,它不会通过实现IList并访问List1.Concat(List2)来复制列表。但是,对于您的目的,这可能是过度的。