CA1825: Evitar asignaciones de matrices de longitud cero

Propiedad Value
Identificador de la regla CA1825
Título Evitar asignaciones de matrices de longitud cero
Categoría Rendimiento
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada en .NET 8 Como sugerencia

Causa

Se asigna un Array vacío sin elementos.

Descripción de la regla

Al inicializar una matriz de longitud cero, se produce una asignación de memoria innecesaria. En su lugar, use la instancia de matriz vacía asignada estáticamente mediante una llamada al método Array.Empty. La asignación de memoria se comparte entre todas las invocaciones de este método.

Cómo corregir infracciones

Para corregir una infracción, sustituya la asignación de la matriz de longitud cero por una llamada a Array.Empty. Por ejemplo, en los dos fragmentos de código siguientes se muestra una infracción de la regla y cómo corregirla:

class C
{
    public void M1()
    {
        // Violates rule CA1825.
        var a = new int[0];
    }
}
class C
{
    public void M1()
    {
        // Resolves rule CA1825 violation.
        var a = System.Array.Empty<int>();
    }
}

Sugerencia

Hay disponible una corrección de código para esta regla en Visual Studio. Para usarla, coloque el cursor sobre la asignación de la matriz y presione Ctrl+.(punto). Elija Usar Array.Empty en la lista de opciones que se presentan.

Code fix for CA1825 - use array empty

Cuándo suprimir las advertencias

Es seguro suprimir una infracción de esta regla si no le preocupa la asignación de memoria adicional.

Nota:

Es posible que vea advertencias de falsos positivos de esta regla si se aplica todo lo siguiente:

  • Está usando Visual Studio 2022, versión 17.5 o posterior, con una versión anterior del SDK de .NET, es decir, .NET 6 o una anterior.
  • Está usando los analizadores del SDK de .NET 6 o una versión anterior de los paquetes del analizador, como Microsoft.CodeAnalysis.FxCopAnalyzers.
  • Está usando una matriz de longitud cero como argumento de atributo, normalmente como un parámetro params.

Los falsos positivos se deben a un cambio importante en el compilador de C#. Considere la posibilidad de usar un analizador más reciente que incluya la corrección de las advertencias de falsos positivos. Actualice a Microsoft.CodeAnalysis.NetAnalyzers, versión 7.0.0-preview1.22464.1 o posterior, o bien use los analizadores del SDK de .NET 7.

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

#pragma warning disable CA1825
// The code that's violating the rule is on this line.
#pragma warning restore CA1825

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none del archivo de configuración.

[*.{cs,vb}]
dotnet_diagnostic.CA1825.severity = none

Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.

Vea también