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 9 | 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.
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.