我的课程中有两个列表,我想再将一个列表公开为ReadOnlyCollectoin,它是两个列表的组合。
我正在寻找实现这一目标的最佳方式。到目前为止,我有两个选择
选项#1
public ReadOnlyCollection<Item> AllItems
{
get
{
var list = new List<Item>();
list.AddRange(List1);
list.AddRange(List2);
return list.AsReadOnly();
}
}
选项#2
使我的两个列表ObservableCollections并且每次修改它们时,修改第三个私有列表。 然后将第三个列表公开为ReadOnlyCollection。
这可能是我在这里遗漏了一些小事。必须有更好的方法来实现这一目标。
答案 0 :(得分:2)
取决于在您的应用程序中调用AllItems的频率以及这两个列表的大小。
如果那些是小集合并且很少调用AllItems,那么Option1就足够了。
如果这些列表快速增长并且经常使用AllItems,则option2是最佳选择。
答案 1 :(得分:1)
你的选择#1看起来对我很好。
你没有“失去一些琐事”。
答案 2 :(得分:0)
您可以编写自己的ReadOnlyCollection版本,它不会通过实现IList并访问List1.Concat(List2)来复制列表。但是,对于您的目的,这可能是过度的。