假设我有一个类InvoiceItem
类型的对象数组,定义如下:
private class InvoiceItem
{
public DateTime InvoiceDate { get; set; }
public int InvoiceID { get; set; }
public byte ItemType { get; set; }
public short Quantity { get; set; }
public string ProductName { get; set; }
public decimal Price { get; set; }
public decimal Amount{ get; set; }
public InvoiceItem(DateTime InvoiceDate,int InvoiceID, short Quantity, string ProductName, decimal Price,decimal Amount, byte ItemType)
{
this.InvoiceDate = InvoiceDate;
this.InvoiceID = InvoiceID;
this.Quantity = Quantity;
this.ProductName = ProductName;
this.Price = Price;
this.Amount = Amount;
this.ItemType = ItemType;
}
}
我尝试将我的项目缓存在名为invoiceItemsCache
private InvoiceItem[] invoiceItemsCache;
每次我想刷新缓存时,我都会重新初始化我的数组:
invoiceItemsCache = new InvoiceItem[count];
我是否需要 Something 来发布以前缓存使用的内存,还是自动完成?如果有人提供有关数组在C#中存储和发布的方式的其他信息,我将不胜感激,以消除我遇到的任何疑问和困惑。
答案 0 :(得分:3)
C#中的GC正在浏览对象并检查引用。如果一个对象没有引用它,那么GC就会释放它。
在你的情况下,如果你这样做
invoiceItemsCache = new InvoiceItem[count];
然后旧的值没有引用它们(除非你对它们有不同的引用,你没有提及,然后你应该首先处理它们)并将被释放
答案 1 :(得分:2)
它由底层垃圾收集器自动完成。
与C#中的任何其他对象一样,存储和释放数组。