我使用几个数组作为序列化的一部分.这些数组的长度需要随着游戏的进行而改变.在我的Save方法中,我当前使用以下代码行创建一个新数组:

int intArray = new int[specifiedLength];

这被认为是不好的做法吗?或者,旧数组可以轻松清理吗?

编辑:我的"保存"方法每1-2分钟调用一次.

推荐答案

Garbage collector(GC)将为您收集垃圾(未使用的内存,包括数组),因此,如果您使用小数组,则无需执行任何操作.然而,如果您frequently(绝对不是一次立即)分配许多large个数组,则内存分配可以是time consumning.如果您希望获得更高的性能,您可能需要try pooling个这些大型数组,例如:

// Huge array allocation from pool
int[] array = ArrayPool<int>.Shared.Rent(1_000_000);

try { 
  // Do something with the array      
}
finally {
  // Return array to pool 
  ArrayPool<int>.Shared.Return(array);
}

Csharp相关问答推荐

旋转时,在另一个对象内按比例zoom 对象

我无法在Program.cs中实例化我的学生类

单元测试和MOQ,最佳解决方案

在. NET Core 8 Web API中,当为服务总线使用通用消费者时,如何防止IServiceProvider被释放或空?"

如何在Reflection. Emit中使用具有运行时定义的类型参数的泛型类型

如何在C#中删除一个特殊字符,如"使用Regex"

如何在Visual Studio代码中更改大括号模式{},用于C#语言

C#DateTime.ToString在ubuntu和centos中返回不同的结果

Azure Function应用(. NET 8)不将信息记录到应用洞察

如何使用C#Interop EXCEL创建度量衡

JSON空引用异常仅在调试器中忽略try-Catch块,但在其他上下文中捕获得很好

如何注册类使用多级继承与接口

在.NET 7.0 API控制器项目中通过继承和显式调用基类使用依赖项注入

该函数不能检测两条曲线的交点

.Net MAUI,在将FlyoutPage添加到容器之前,必须设置添加构造函数导致Flyout和Detail"

在集成测试中可以在模拟InMemory数据库中设定数据种子

如何在使用属性 Select 器时判断是否可以为空

我可以强制System.Text.Json.JsonSerializer以非递归方式工作吗?

C#使用相同内存的多个数组

无法向Unity注册Microsoft Logger