gpt4 book ai didi

c# - 我是否需要释放 C# 中数组使用的内存?

转载 作者:行者123 更新时间:2023-11-30 14:58:49 24 4
gpt4 key购买 nike

假设我有一个类型为 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];

我是否需要做一些事情释放以前缓存使用的内存,还是自动完成?如果有人提供一些关于数组在 C# 中存储和释放的方式的额外信息,以消除我遇到的任何疑问和困惑,我将不胜感激。

最佳答案

C# 中的 GC 遍历对象并检查引用。如果一个对象没有引用它,那么 GC 将释放它。

在你的情况下,如果你这样做了

invoiceItemsCache = new InvoiceItem[count];

然后旧值没有引用它们(除非你对它们有不同的引用你没有提到然后你应该先处理它们)并且将被释放

关于c# - 我是否需要释放 C# 中数组使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com