Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA1825 |
| Titel | Vermijd toewijzingen van arrays met lengte nul |
| Categorie | Prestaties |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
| Toepasselijke talen | C# en Visual Basic |
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 de statisch toegewezen lege array-instantie door de Array.Empty-methode aan te roepen. De geheugentoewijzing wordt gedeeld in alle aanroepen van deze methode.
Hoe schendingen op te lossen
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 Gebruik Array.Empty uit de lijst met opties die wordt 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 vals-positieve waarschuwingen van deze regel als aan alle van de volgende wordt voldaan:
- 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 analyser te gebruiken die de oplossing bevat voor de valse positieve waarschuwingen. 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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.