Share via


CA1825: Matrixtoewijzingen met lengte nul vermijden

Eigenschappen Weergegeven als
Regel-id CA1825
Titel Matrixtoewijzingen met lengte nul voorkomen
Categorie Prestaties
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Als suggestie

Oorzaak

Er wordt een lege Array zonder elementen toegewezen.

Beschrijving van regel

Het initialiseren van een matrix met lengte nul leidt tot een onnodige geheugentoewijzing. Gebruik in plaats daarvan het statisch toegewezen lege matrixexemplaren door de methode aan te Array.Empty roepen. De geheugentoewijzing wordt gedeeld in alle aanroepen van deze methode.

Schendingen oplossen

Als u een schending wilt oplossen, vervangt u de matrixtoewijzing met lengte nul door een aanroep naar Array.Empty. In de volgende twee codefragmenten ziet u bijvoorbeeld een schending van de regel en hoe u deze kunt oplossen:

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>();
    }
}

Tip

Er is een codeoplossing beschikbaar voor deze regel in Visual Studio. Als u deze wilt gebruiken, plaatst u de cursor op de matrixtoewijzing en drukt u op Ctrl+. (punt). Kies Matrix.Leeg gebruiken in de lijst met opties die worden weergegeven.

Codefix voor CA1825 - matrix leeg gebruiken

Wanneer waarschuwingen onderdrukken

Het is veilig om een schending van deze regel te onderdrukken als u zich geen zorgen maakt over de extra geheugentoewijzing.

Notitie

U ziet mogelijk fout-positieve waarschuwingen van deze regel als alle volgende van toepassing zijn:

  • U gebruikt Visual Studio 2022 versie 17.5 of hoger met een oudere versie van de .NET SDK, dat wil zeggen .NET 6 of eerder.
  • U gebruikt de analyses van de .NET 6 SDK of een oudere versie van de analysepakketten, zoals Microsoft.CodeAnalysis.FxCopAnalyzers.
  • U gebruikt een matrix met lengte nul als kenmerkargument, meestal als parameter params .

De fout-positieven zijn te wijten aan een wijziging die fouten veroorzaakt in de C#-compiler. Overweeg om een nieuwere analyse te gebruiken die de oplossing voor de fout-positieve waarschuwingen bevat. Voer een upgrade uit naar Microsoft.CodeAnalysis.NetAnalyzers versie 7.0.0-preview1.22464.1 of hoger of gebruik de analyses van de .NET 7 SDK.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Zie ook