Где живая структура со ссылочным типом в качестве свойства - PullRequest
3 голосов
/ 22 февраля 2011

Я создал struct со статическим массивом ссылочного типа и свойством, которые берут объект из этого массива по уникальному идентификатору, хранящемуся в struct - но я не знаю, имеет ли это какой-то смысл, я хочу сохранить struct в стеке.

struct TestStruct
{
 static TestClass[] Instances = new TestClass[16]; 
 int uid; //max value = 15
 TestClass Instance
 {
  get { return Instances[uid]; }
 } 
}

Ответы [ 2 ]

5 голосов
/ 22 февраля 2011

Сама структура будет храниться в стеке.

TestClass - ваш тип ссылки. Независимо от того, что вы делаете, они будут храниться в куче. В этом случае Instances - это статический массив в куче.

2 голосов
/ 22 февраля 2011

Хорошо, поэтому Instances является статической переменной - так что она будет в куче. Точно так же сам массив является ссылочным типом, поэтому он будет в куче.

Только переменная uid фактически является частью значения для определенного TestStruct, и это будет в куче или в стеке в зависимости от контекста.

Это все детали реализации, хотя ... что вы действительно пытаетесь достичь ?

...