类与结构

Emz*_*Emz 2 c#

使用这两个作为参考

不可变类vs结构

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)

我试着遵循的教程系列使用了一个结构,但是; 现在有了这些知识,我是正确的,我应该有一个项目插槽的课程?或者我的理解是否浅薄?

Sim*_*ead 6

去吧class.

structs 的推荐大小不是因为可用的内存(是的,这些天内存很便宜,正如Arun在评论中指出的那样).但真正的原因是因为structs是按值复制的.这意味着每次你传递你的结构时......每个字段都会随之复制.因此,struct您在任何地方看到的" 字节限制"建议都是为了避免这种情况.

class另一方面,A 只复制引用的值...这是它运行的处理器的本机字大小..使复制操作几乎不可测量.

你声明你的结构将比16个字节大得多..这绝对是足够的理由,class以避免在使用时复制整个内存块的开销struct.