c# - new List<T>() 和 new List<T>(0) 有区别吗

标签 c# .net list memory-management

new List<T>()之间有区别吗?和 new List<T>(0)

可能这是一个微优化,但目的是理解内存分配方面的差异。

最佳答案

Here is the actual source code (为简洁起见,对某些部分进行了删减)

    static readonly T[]  _emptyArray = new T[0];  

    public List() {
        _items = _emptyArray;
    }

    public List(int capacity) {
        if (capacity < 0) ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum);
        Contract.EndContractBlock();

        if (capacity == 0)
            _items = _emptyArray;
        else
            _items = new T[capacity];
    }

如您所见,调用 List()List(0) 都只是将 _emptyArray 分配给 _items .代码(就内存占用而言)是相同的。

关于c# - new List<T>() 和 new List<T>(0) 有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30878950/

相关文章:

C#:找出代码中算术运算的结果类型(例如 int + double = double)

c# - session 或 webAPI 中的任何替代方案

c# - 有没有办法在 Roslyn 中可视化 SemanticModel

python - 根据python的结果降序排列一个列表

python - 无法将输出转换为列表

C# Razor 重定向到 .Net Core 5 中具有自定义路由的页面

c# - 如何验证是否已在模拟 DbContext 上调用了 RemoveRange?

c# - 帮助 C#.NET 通用集合性能和优化

.net - 为什么 VFP .NET OLEDb 提供程序不能在 64 位 Windows 中工作?

java - 读取文件并映射到 Map<String, List<String>>