CA1861: Az állandó tömbök argumentumként való elkerülése
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1861 |
Cím | Az állandó tömbök elkerülése argumentumként |
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
A konstans értékek állandó tömbje normál meghívási vagy bővítménymetódus-meghívással továbbítja a metódusnak.
Szabály leírása
Az argumentumként átadott állandó tömbök nem lesznek újra felhasználva, ha ismételten meghívják őket, ami azt jelenti, hogy minden alkalommal új tömb jön létre. Ha az átadott tömb nem mutálódik az úgynevezett metóduson belül, érdemes lehet kinyerni egy static readonly
mezőbe a teljesítmény javítása érdekében.
Megjegyzés:
Ha a hívott metódus mutálja az átadott tömböt, vagy ha nem biztos abban, hogy a metódus mutálná-e a tömböt, ne bontsa ki a tömböt mezőre static readonly
. Ha így tesz, az törést okozhat. Ebben az esetben jobb, ha inkább elnyomja a figyelmeztetést.
Szabálysértések kijavítása
Az állandó tömbök kinyerése mezőkre static readonly
, ha az átadott tömb nem mutálódik az úgynevezett metóduson belül.
Az alábbi példa a szabály megsértését mutatja be:
// A method argument
string message = string.Join(" ", new[] { "Hello", "world!" });
' A method argument
Dim message As String = String.Join(" ", {"Hello", "world!"})
Az alábbi példa bemutatja, hogy a szabály megsértésének kijavítása az argumentum mezőre static readonly
történő kinyerésével történik.
private static readonly string[] array = new[] { "Hello" , "world!" };
private string GetMessage()
{
return string.Join(" ", array);
}
Private Shared ReadOnly array As String() = {"Hello", "world!"}
Private Function GetMessage() As String
Return String.Join(" ", array)
End Function
Most a tömb értékét a rendszer fordításkor oldja fel, nem pedig futásidőben, így a kód nagyobb teljesítményt nyújt.
Mikor kell letiltani a figyelmeztetéseket?
A szabály megsértésének mellőzése, ha:
- A hívás csak egyszer fut.
- A tömb a meghívott metóduson belül mutálható, vagy nem biztos benne, hogy mutálódna.
- Nem aggódik amiatt, hogy az egyes meghívásokhoz konstans tömböket hozhat létre.
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 CA1861
// The code that's violating the rule is on this line.
#pragma warning restore CA1861
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.CA1861.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kapcsolódó szabályok
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: