2014-10-16 45 views
1

我知道結構未保存在堆中。這個類被保存在堆中。 這很明顯,但如果它包含某個類的字段,將保存在哪裏? 例如:具有類字段的結構

值類型和引用類型的
class TestClass 
{ 
    public string Name; 
} 

struct MyStruct 
{ 
    public TestClass myClass; 
} 

回答

0

Storage是實施細節,但不能保證保持固定在CLR或實現的未來版本中實現。

要從MS規格報價:

在桌面上的CLR的Microsoft實現的C#,值類型 被存儲在堆棧上,當值是一個局部變量或 臨時性的即不是封閉在一個lambda或 匿名方法,這個方法體的局部變量不是一個迭代器塊,並 抖動選擇不enregister值

在您的例子,答案是...這取決於。

我建議讀一下關於truth about value types的Eric Lippert的博客文章和the stack is an implementation detail這個以獲取更多信息。