Всегда ли выделяются структуры в стеке или иногда в куче?

У меня сложилось впечатление, что в 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);
}
38
задан user2864740 23 June 2014 в 23:22
поделиться