我不确定是否使用可变结构或可变类。
我的程序存储一个包含很多对象的数组。
我注意到使用类会使所需的内存量增加一倍。但是,我希望对象是可变的,并且有人告诉我使用可变结构是邪恶的。
这就是我的类型:
struct /* or class */ Block
{
public byte ID;
public bool HasMetaData; // not sure whether HasMetaData == false or
// MetaData == null is faster, might remove this
public BlockMetaData MetaData; // BlockMetaData is always a class reference
}
像这样分配大量对象(请注意,下面的两个代码都运行了 81 次):
// struct
Block[,,] blocks = new Block[16, 256, 16];
使用大约 35 MiB 内存,同时执行以下操作:
// class
Block[,,] blocks = new Block[16, 256, 16];
for (int z = 0; z < 16; z++)
for (int y = 0; y < 256; y++)
for (int x = 0; x < 16; x++)
blocks[x, y, z] = new Block();
使用大约 100 MiB 的 RAM。
总而言之,我的问题如下:
我应该为我的块类型使用结构体还是类?实例应该是可变的,并存储一些值和一个对象引用。