在C#中,我应该使用struct来包装对象以实现其他接口吗?

she*_*min 3 .net c# oop struct design-patterns

有一个现有的class从第三方库我想重复使用,但它并没有实现一些所需的界面.我正在考虑将其包装在一个内部struct以满足所需的接口(基本上就像Scala一样).为什么我喜欢的原因structclass这个用例是因为它只能存储一两件事:被包装的对象,而且它可能不会招致性能损失?但是我不确定如果我传递一个struct接受接口的方法会发生装箱吗?这种方法还有其他缺点吗?

Ole*_*kyi 5

Microsoft给出了非常明确和直接的原因,您应该使用struct而不是class:

√如果类型的实例很小并且通常是短暂的或者通常嵌入在其他对象中,则CONSIDER定义结构而不是类.

X AVOID定义结构,除非该类型具有以下所有特征:

  • 它在逻辑上表示单个值,类似于原始类型(int,double等).
  • 它的实例大小小于16个字节.
  • 这是不可改变的.
  • 它不必经常装箱.

http://msdn.microsoft.com/en-us/library/ms229017.aspx

似乎不是你的情况.顺便说一下,如果你把struct一个方法传递给一个方法,就会发生拳击interface.还要考虑结构不支持继承,并且它们不能具有显式的无参数构造函数.