@Fjfgs

Где хранятся struct, реализующие interface?

Где хранятся структуры, которые реализуют интерфейс. Я где-то слышал, что они хранятся в куче(heap)
  • Вопрос задан
  • 80 просмотров
Решения вопроса 2
AshBlade
@AshBlade
Просто хочу быть счастливым
Они хранятся на стеке.
Если нужно передать куда-то, то уже зависит:
- Если передается интерфейс - то боксинг и это куча
- Если исходная структура - то просто структура копируется (без боксинга)

Если интересует IDisposable - то тут без боксинга. Компилятор понимает, что нужно просто вызвать Dispose и боксинг не происходит.

struct SomeStruct: IInterface
{ }

void DoSomethingStruct(SomeStruct s)
{ }

void DoSomethingInterface(IInterface i)
{ }

void Main()
{
   var s = new SomeStruct();
   // Без боксинга
   DoSomethingStruct(s);
   // Боксинг
   DoSomethingInterface(s);
}
Ответ написан
Комментировать
vabka
@vabka Куратор тега C#
Токсичный шарпист
Структура, которая реализует интерфейс хранится там же, где и обычная структура - если в переменной, то на стеке, а если в поле класса, то там же, где и тело класса - в куче.

Если кастануть структуру к интерфейсу, то произойдёт боксинг, как и при касте к object.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы