我想在 C# 中创建一个具有类似语义的值的类型。它是不可变的,并且内存占用少。但是,它主要是通过它实现的接口来访问的。在这种情况下,必须将值类型装箱,这意味着必须将实际值从堆栈复制到堆。因此,我想知道使用值类型(结构)而不是引用类型(类)是否有任何优势?
I
为了说明我的情况,我提供了以下具有实现ReferenceTypeImplementation
和的接口示例ValueTypeImplementation
:
interface I
{
int GetSomeInt();
}
class ReferenceTypeImplementation : I
{
public readonly int i;
public ReferenceTypeImplementation (int i)
{
this.i = i;
}
public int GetSomeInt()
{
return i*2;
}
}
struct ValueTypeImplementation : I
{
public readonly int i;
public ValueTypeImplementation (int i)
{
this.i = i;
}
public int GetSomeInt()
{
return i*2;
}
}
我几乎只使用这些类型的接口I
,比如
I i1 = new ReferenceTypeImplementation(1);
I i2 = new ValueTypeImplementation(1);
使用ValueTypeImplementation
over有什么好处ReferenceTypeImplementation
吗?