Arraylist使用Array?

rkr*_*ter 4 .net arrays arraylist

ArrayList内部是否使用数组?如果我们使用默认构造函数(new ArrayList()),这是一个空数组吗?谢谢.

Mar*_*ers 7

是的,它确实.验证这一点的最简单方法之一是查看源代码.您既可以使用参考源,也可以使用.NET Reflector来反编译.NET DLL.

这是ArrayList的相关部分,来自Reflector:

public class ArrayList : IList, ICollection, IEnumerable, ICloneable
{
    static ArrayList()
    {
        emptyArray = new object[0];
    }

    public ArrayList()
    {
        this._items = emptyArray;
    }

    private object[] _items;

    private static readonly object[] emptyArray;

    // etc...
}
Run Code Online (Sandbox Code Playgroud)

你不应该依赖于这种情况.这是一个实现细节,可能会在.NET的未来版本中发生变化(尽管可能不会).对于新代码,您应该考虑使用List<T>而不是ArrayList.