【发布时间】:2019-10-25 16:21:54
【问题描述】:
我的印象是,在 C# 中,结构元素是在堆栈上分配的,因此在从创建它们的方法返回时会消失。但是如果我将结构值放在一个列表中并返回它会发生什么?元素幸存下来。 结构实例有时会分配在堆上吗?
internal struct Stru
{
public int i;
}
internal class StruTry
{
public List<Stru> Get(int max)
{
var l = new List<Stru>();
for (int i = 0; i < max; i++)
l.Add(new Stru {i=i});
return l;
}
}
代码打印0、1、2
[Test]
public void T()
{
var ll = new StruTry().Get(3);
foreach (var stru in ll)
Console.WriteLine("* "+ stru.i);
}
【问题讨论】:
标签: c# struct allocation