-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
',因爲大概修改這兩個列表是沒有意義的。 –