其中带有引用类型的live struct作为属性

时间:2011-02-22 14:45:24

标签: c# garbage-collection struct

我创建了带有引用类型和属性的静态数组的struct,它通过存储在struct中的唯一id从该数组获取对象 - 但我不知道它有任何意义,我想在堆栈上存储struct。

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

2 个答案:

答案 0 :(得分:5)

结构本身将存储在堆栈中。

TestClass是您的参考类型。无论你做什么,它们都将被存储在堆上。在这种情况下,Instances是堆上的静态数组。

答案 1 :(得分:2)

好的,所以Instances是一个静态变量 - 所以它将在堆上。同样,数组本身也是一个引用类型,所以它将在堆上。

只有uid变量实际上是特定TestStruct的值的一部分,并且它将在堆上或堆栈上,具体取决于上下文。

It's all an implementation detail though ...你真正想要实现的是什么?