1
我知道結構未保存在堆中。這個類被保存在堆中。 這很明顯,但如果它包含某個類的字段,將保存在哪裏? 例如:具有類字段的結構
值類型和引用類型的class TestClass
{
public string Name;
}
struct MyStruct
{
public TestClass myClass;
}
我知道結構未保存在堆中。這個類被保存在堆中。 這很明顯,但如果它包含某個類的字段,將保存在哪裏? 例如:具有類字段的結構
值類型和引用類型的class TestClass
{
public string Name;
}
struct MyStruct
{
public TestClass myClass;
}
Storage是實施細節,但不能保證保持固定在CLR或實現的未來版本中實現。
要從MS規格報價:
在桌面上的CLR的Microsoft實現的C#,值類型 被存儲在堆棧上,當值是一個局部變量或 臨時性的即不是封閉在一個lambda或 匿名方法,這個方法體的局部變量不是一個迭代器塊,並 抖動選擇不enregister值
在您的例子,答案是...這取決於。
我建議讀一下關於truth about value types的Eric Lippert的博客文章和the stack is an implementation detail這個以獲取更多信息。