-1
所以我有这个类的公共财产:如何在懒惰实现添加到现有的公共财产(C#)
public static class DataStore
{
public static readonly List<Item> Items;
static DataStore
{
Items = new List<Item>
{
new Item {Name = "A"},
new Item {Name = "B"},
new Item {Name = "C"},
...//many more
};
}
}
为了节省内存,我加入一个List<Lazy<Item>>
到DataStore:
List<Lazy<Item>> LazyItems = new List<Lazy<Item>>
{
new Lazy<Item>(() => new Item {Name="A"}),
new Lazy<Item>(() => new Item {Name="B"}),
};
但是List<Item>
是一个公共财产,并在很多地方被引用。我怎样才能保留现有的List<Item>
并使用新的财产?
此更改会增加内存占用量,而不会降低内存占用量。 – Servy
您有没有费心分析过这个问题,以确定您的原始示例中的内存消耗是否是瓶颈? –
这里没有足够的上下文来帮助你。从字面上看,唯一有效的答案是“你不能那样做”。在你的问题中也没有足够的信息来知道你想要做什么甚至是有用的。但假设它是在你的真实世界的场景中,你必须至少将'Items- Items'更改为'IList
- Items',这样你就可以提供一个定制的'IList
- '实现来了解'LazyItems '对象,并可以从那里检索元素。考虑同样使用'IReadOnlyList
',因为大概修改这两个列表是没有意义的。 –