【发布时间】:2023-02-21 01:33:08
【问题描述】:
void Test()
{
Test.Instance.a++;
Console.WriteLine("Test:" + Test.Instance.a);
}
struct Test
{
public static Test Instance = new();
public int a;
}
Test.Instance 对象会存储在堆上还是堆栈上,为什么?
【问题讨论】:
void Test()
{
Test.Instance.a++;
Console.WriteLine("Test:" + Test.Instance.a);
}
struct Test
{
public static Test Instance = new();
public int a;
}
Test.Instance 对象会存储在堆上还是堆栈上,为什么?
【问题讨论】:
它们不能存储在堆栈中,因为它们没有与静态数据关联的堆栈帧。
根据 Jon Skeet 的blog,“每个静态变量都存储在堆上。”
【讨论】: