这个问题已经在这里有了答案:




已关闭8年。






采取以下代码:

interface ISomeInterface
{
    public int SomeProperty { get; }
}

struct SomeStruct : ISomeInterface
{
    int someValue;

    public int SomeProperty { get { return someValue; } }

    public SomeStruct(int value)
    {
        someValue = value;
    }
}

然后在某处执行此操作:
ISomeInterface someVariable = new SomeStruct(2);

在这种情况下将SomeStruct装箱吗?

最佳答案

是的。基本上,每当您需要引用并且只有一个值类型值时,该值就会被装箱。

在这里,ISomeInterface是一个接口(interface),是一种引用类型。因此someVariable的值始终是一个引用,因此必须将新创建的struct值装箱。

09-30 14:45