假设您需要存储一定数量的数据,这些数据由结构或类表示。您最多只能存储N个元素,如果要添加更多元素,则必须先删除现有元素。
您可以使用任何存储数据的方式-列表,数组(如果需要,也可以使用其他任何方式)。
在垃圾收集方面,是否使用类或结构表示信息是否有所不同?是否将其存储在列表或数组中会有所不同吗?
我的直觉是最好的方法是使用结构数组,因为原则上GC永远不需要在这里收集任何东西(虽然该数组存储在堆中,但其大小保持不变,因此没有任何收集我相信?)。
我不完全确定将如何表示结构列表-是否存在与添加/删除结构元素相关联的任何形式的垃圾回收?
至于使用类而不是结构,我希望一旦将其从列表中删除或覆盖在数组中,则需要收集旧的引用,因此会给GC造成压力。
如果我的直觉在这里是正确的,或者我在任何地方出错了,将不胜感激!谢谢
示例代码:
public struct SStruct
{
int ABC;
}
public class SClass
{
int ABC;
}
public class Test
{
List<SStruct> _data1;
List<SClass> _data2;
SStruct[100] _data3;
SClass[100] _data4;
public void run()
{
var sStruct = new SStruct();
var sClass = new SClass();
if(data1.Count > 0)
_data1.RemoveAt(0);
if(data2.Count > 0)
_data2.RemoveAt(0);
_data1.Add(sStruct);
_data2.Add(sClass);
_data3[0] = sStruct;
_data4[0] = sClass;
}
相关分类