![](/img/trans.png)
[英]In C#, What is different between local struct instance and member struct instance?
[英]struct instance as member of class C#
我完全迷失在以下示例代碼的邏輯中:
namespace StructInClass
{
internal class Program
{
static void Main(string[] args)
{
SomeClass someClass = new SomeClass();
someClass.DoStaff();
}
}
public class SomeClass
{
private SomeStruct _someStruct;
public SomeClass() =>
_someStruct = new SomeStruct();
public void DoStaff() =>
_someStruct = new SomeStruct(4, 5);
}
public readonly struct SomeStruct
{
public readonly int x;
public readonly int y;
public SomeStruct()
{
this.x = 0;
this.y = 1;
}
public SomeStruct(int x, int y)
{
this.x = x;
this.y = y;
}
}
}
我在這里有幾個問題。
SomeClass
的實例時,它的SomeStruct
實例將被放置在堆中(同時這個結構實例的指針位於堆棧中)?someClass.DoStaff()
時, SomeStruct
的新實例是在DoStuff
方法的相應堆棧框架中創建的,對嗎? 然后指針現在指向堆棧中的新結構實例?SomeStruct
類型的私有字段有什么意義嗎?谷歌搜索給了我模棱兩可的答案。
#1。 SomeClass 在堆上,結構在該堆 memory 中內聯(如果 SomeStruct 是 class 那么它將在單獨的堆分配中)
#2 不 - 它在堆上
#3 - 是的,它內聯在包含的 class 中,而不是新的堆分配
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.