0

我的班级有两个列表,我想再公开一个列表作为 ReadOnlyCollectoin,它是两个列表的组合。

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

选项1

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

        }
    }

选项 #2

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

可能我在这里遗漏了一些微不足道的东西。必须有更好的方法来实现这一点。

4

3 回答 3

2

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

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

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

于 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 回答