TAd*_*hav 7 .net c# arrays memory-management list
通用列表是存储在堆栈还是堆上?
//List of Ints
List<int> myInts = new List<int>();
myInts.Add(5);
myInts.Add(10);
myInts.Add(20);
Run Code Online (Sandbox Code Playgroud)
被myInts存储在堆栈或堆中的?如果我int在列表中添加一个,是否会发生装箱或拆箱?
在C#或.NET中创建对象时,没有"堆"或"堆栈"的概念.虽然列表存储在堆上,但这实际上是CLR如何管理其内存的实现细节.
这里没有拳击或拆箱.这是使用泛型List类而不是非泛型的优点ArrayList.当List<int>创建一个新实例时,就好像你编写了一个类,其唯一目的是管理一个列表int.int从列表中检索到时,幕后甚至没有任何投射.
List<T>是引用类型。在内部使用T[]。数组是引用类型。引用类型的实例存储在堆中。由于示例中的列表是a List<int>,因此只能容纳ints,并且不会发生装箱。如果需要将值类型视为引用类型,则会发生装箱。