可能重复:
结构实现接口是否安全?
拿这个代码:
interface ISomeInterface
{
public int SomeProperty { get; }
}
struct SomeStruct : ISomeInterface
{
int someValue;
public int SomeProperty { get { return someValue; } }
public SomeStruct(int value)
{
someValue = value;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在某个地方这样做:
ISomeInterface someVariable = new SomeStruct(2);
Run Code Online (Sandbox Code Playgroud)
就是SomeStruct在这种情况下,盒装?
接口变量是否具有值类型或引用类型语义?
接口按类型实现,这些类型是值类型或引用类型.显然,这两个int和string实现IComparable,并且int是一个值类型,并string为引用类型.但是这个怎么样:
IComparable x = 42;
IComparable y = "Hello, World!";
Run Code Online (Sandbox Code Playgroud)
(我试图回答的问题可能被删除了,因为它询问接口是存储在堆栈还是堆中,而且,正如我们都应该知道的那样,考虑到它们之间的值和引用类型之间的差异更具建设性.语义而不是它们的实现.有关讨论,请参阅Eric Lippert的堆栈是一个实现细节.)