我不确定是否使用可变结构体或可变类。 我的程序存储了一个包含大量对象的数组。 我注意到使用类会使所需内存量加倍。但是,我希望这些对象是可变的,并且有人告诉我使用可变结构体是邪恶的。 这是我的类型:
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的内存。
综上所述,我的问题如下:
对于我的Block类型,我应该使用struct还是class?实例应该是可变的,并存储几个值和一个对象引用。