interface IFoo
{
void FooMethod();
}
struct FooStruct: IFoo
{
public void FooMethod()
{
this = new FooStruct():
}
}
...
FooStruct fooStruct = new FooStruct();
((IFoo)fooStruct).FooMethod();
...
Подскажите пожалуйста, происходит ли неявный unbox при вызове метода FooMethod через интерфейс IFoo?
В структурах ведь this ведет себя как ref параметр (кроме конструкторов), а чтобы получить ссылку на запакованное значение, его необходимо распаковать. Получается, что в любых вызовах виртуальных методов и методов интерфейсов у
запакованных значений, происходит неявная распаковка. Так написано в книге Accelerated C# (page 93). Но я решил спросить у знатоков, потому что:
1. "Плаваю" в этом вопросе.
2. В книге есть ошибки.
3. Искал в спецификации и не нашел.