C# · 12月 23, 2021

c# – 数组调整大小是否调用GC?

我研究了Array.Resize()的实现,并注意到创建并返回了一个新的数组.我的目标是在游戏过程中进行零内存分配,所以我需要避免创建任何新的参考类型.调整数组的大小会触发上一个数组的垃圾收集器吗?我正在创建自己的2D数组调整器,但它基本上与.NET Resize()方法相同.

如果新的数组小于上一个数组,但是多余的对象已经被放回到一个通用的对象池中,这是否会调用GC?

数组将不断地在我的游戏循环中创建,所以我需要尝试尽可能高效.我正在尝试创建一个数组池,所以不需要继续创建它们的游戏.但是,如果resize方法执行相同的操作,那么不仅仅是实例化一个新的数组而不是使用该池,所以没有任何意义.

谢谢您的帮助

解决方法 Array.Resize实际上并没有改变原来的数组 – 任何仍然有引用它的人都可以像以前一样使用它.因此,无法进行优化.坦白说,这是一个非常命名的方法,IMO