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