零长度数组分配

本文介绍零长度数组分配的性能见解。

原因

在 .NET 中分配零长度数组可能会导致不必要的内存分配。 这些分配虽然很小,但可能会累积并导致性能问题,尤其是在高性能或内存受限应用程序中。

性能见解说明

分配零长度数组时,将导致不需要的内存分配。 使用由 Array.Empty<T>() 方法提供的静态分配的空数组实例,而不是创建新的数组,而不是创建新数组。 此方法返回指定类型的缓存空数组,从而避免新分配的开销。

如何调查警告

单击 “调查”链接,转到显示分配的零长度数组的 分配 视图。 双击分配会显示发生分配的代码路径。 请考虑使用由 Array.Empty<T>()提供的静态分配的空数组实例减少这些分配。

下面是空数组分配及其解析的示例:

违反:

class Example
{
    public void Method()
    {
        var array = new int[0];
    }
}

分辨率:

class Example
{
    public void Method()
    {
        var array = Array.Empty<int>();
    }
}

其他资源

有关避免零长度数组分配和其他性能最佳做法的详细信息,请参阅以下资源:

CA1825:避免零长度数组分配(代码分析)

通过遵循这些准则,可以确保应用程序针对性能进行优化,并避免不必要的内存开销。