Скажем, у меня есть структура и некоторый интерфейс, который, помимо всего прочего, предоставляет, что структура как свойство:Связаны ли интерфейсы со свойствами структуры в боксе?
public struct MyStruct{
public readonly string Hello;
public MyStruct(string world){
Hello = world;
}
}
public interface IMyInterface{
MyStruct myStruct{ get; set; }
}
И в моем приложении, объект, который реализует этот интерфейс создается и передается в какой-то метод:
public void MyMethod(IMyInterface interface){
var structContents = interface.myStruct;
Console.WriteLine(structContents.Hello);
}
Мой вопрос: когда я упаковываю это значение STRUCT в интерфейс и передать его вокруг моего приложения, в том, что структура быть положенным в коробку, а затем быть Unboxed позже, когда я к нему доступ в MyMethod? Или есть какой-нибудь другой бокс/unboxing или другой вопрос, идущий за кулисами с таким дизайном?
Нет, структуры как члены интерфейсов не помещаются в коробку. Структуры, назначенные переменной типа интерфейса, которые они реализуют, вставляются в коробку. – Lee