使用这两个作为参考
http://msdn.microsoft.com/en-us/library/ms229017(v=vs.110).aspx
我想知道在我的情况下推荐什么(最好是为什么).我目前正在构建库存管理器,添加,删除,移动,删除项目.(稍后会装备/装备,但它们不会直接与我的库存集成,因为库存只管理删除(装备)和添加(用于非装备)
所以无论是类还是结构,这都是问题所在!
一个人指出一个8字节的限制,msdn说16.按Item类将比那更多.
private string _name;
private string _desc;
private bool _dropable;
private int _price;
private int _maxQuantity;
Run Code Online (Sandbox Code Playgroud)
我的ItemSlot结构/类将具有Item(或int _itemId)以及数量.应该(是的?)加起来超过16个字节.
private ItemSlot[] _inventory;
public const int INVENTORY_SIZE = 50;
public Party () {
ItemSlot[] _inventory = new ItemSlot[INVENTORY_SIZE];
}
Run Code Online (Sandbox Code Playgroud)
我试着遵循的教程系列使用了一个结构,但是; 现在有了这些知识,我是正确的,我应该有一个项目插槽的课程?或者我的理解是否浅薄?
去吧class.
structs 的推荐大小不是因为可用的内存(是的,这些天内存很便宜,正如Arun在评论中指出的那样).但真正的原因是因为structs是按值复制的.这意味着每次你传递你的结构时......每个字段都会随之复制.因此,struct您在任何地方看到的" 字节限制"建议都是为了避免这种情况.
class另一方面,A 只复制引用的值...这是它运行的处理器的本机字大小..使复制操作几乎不可测量.
你声明你的结构将比16个字节大得多..这绝对是足够的理由,class以避免在使用时复制整个内存块的开销struct.