Megosztás a következőn keresztül:


CA1825: A nulla hosszúságú tömbfoglalások elkerülése

Tulajdonság Érték
Szabályazonosító CA1825
Cím Nulla hosszúságú tömbfoglalások elkerülése
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

Egy elem nélküli üres Array elem van lefoglalva.

Szabály leírása

A nulla hosszúságú tömb inicializálása szükségtelen memóriafoglaláshoz vezet. Ehelyett használja a statikusan lefoglalt üres tömbpéldányt a Array.Empty metódus meghívásával. A memóriafoglalás a metódus összes meghívása között meg van osztva.

Szabálysértések kijavítása

A szabálysértés kijavításához cserélje le a nulla hosszúságú tömbfoglalást egy hívásra.Array.Empty A következő két kódrészlet például a szabály megsértését és a hiba elhárítását mutatja be:

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

Tipp.

Ehhez a szabályhoz kódjavítás érhető el a Visual Studióban. A használatához helyezze a kurzort a tömbfoglalásra, és nyomja le a Ctrl+ billentyűt. (pont). Válassza a Tömb használata.Üres lehetőséget a megjelenő lehetőségek listájából.

Code fix for CA1825 - use array empty

Mikor kell letiltani a figyelmeztetéseket?

Ha nem aggódik a további memóriafoglalás miatt, nyugodtan letilthatja a szabály megsértését.

Megjegyzés:

Ha az alábbiak mindegyike érvényes, a szabály tévesen pozitív figyelmeztetéseket jeleníthet meg:

  • A Visual Studio 2022 17.5-ös vagy újabb verzióját használja a .NET SDK egy régebbi verziójával, vagyis a .NET 6-os vagy korábbi verziójával.
  • A .NET 6 SDK-ból származó elemzőket vagy az elemzőcsomagok egy régebbi verzióját használja, például a Microsoft.CodeAnalysis.FxCopAnalyzerst.
  • Egy nulla hosszúságú tömböt használ attribútumargumentumként, leggyakrabban paraméterként params .

A hamis pozitív értékek a C#-fordító kompatibilitástörő változásának köszönhetők. Fontolja meg egy újabb elemző használatát, amely tartalmazza a hamis pozitív figyelmeztetések javítását. Frissítsen a Microsoft.CodeAnalysis.NetAnalyzers 7.0.0-preview1.22464.1-es vagy újabb verziójára, vagy használja a .NET 7 SDK elemzőit.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.

Kapcsolódó információk