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


Stackalloc gyűjteménykifejezés használata (IDE0302)

Ingatlan Érték
szabály azonosítója IDE0302
cím Gyűjteménykifejezés használata a stackallochoz
kategória Stílus
alkategória Nyelvi szabályok (kifejezésszintű beállítások)
Alkalmazható nyelvek C# 12+
Beállítások dotnet_style_prefer_collection_expression

Áttekintés

Ez a szabály hasonló a Tömb (IDE0300) gyűjteménykifejezésének használatához,, de tömbök helyett stackalloc keres. A IDE0300-hez hasonlóan felajánlja a kód konvertálását egy gyűjteménykifejezéshasználatára. A stackalloc int[] { ... } és a stackalloc [] { ... } például [...]-re vannak egyszerűsítve.

Jegyzet

Ez a szabály csak a .NET 8 és újabb verzióiban érhető el, ahol az értékek tárolhatók a veremben.

Beállítások

A beállítások határozzák meg a szabály kényszerítéséhez használni kívánt viselkedést. További információ a beállítások konfigurálásáról: Beállításformátum.

dotnet_style_prefer_collection_expression (gyűjteménykifejezés használatának preferálása)

Ingatlan Érték Leírás
beállításnév dotnet_style_prefer_collection_expression (gyűjteménykifejezés használatának preferálása)
opció értékei true | when_types_exactly_match Inkább csak akkor használjon gyűjteménykifejezéseket, ha a típusok pontosan egyeznek, például List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* A gyűjteménykifejezéseket akkor is érdemes használni, ha a típusok lazán egyeznek, például IEnumerable<int> list = new List<int>() { 1, 2 };. A megcélzott típusnak meg kell egyeznie a jobb oldali típussal, vagy a következő típusok egyikének kell lennie: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Kikapcsolja a szabályt.
alapértelmezett beállításérték when_types_loosely_match*

*Ha ezt a lehetőséget használja, a kódjavítás megváltoztathatja a kód szemantikáját.

A when_types_loosely_match szabály értéke nem vonatkozik erre a szabályra IDE0302, de itt látható a dotnet_style_prefer_collection_expression lehetőség teljessége érdekében (amelyet több szabály oszt meg). Az alapértelmezett érték gyakorlatilag true.

Példa

// Code with violations.
ReadOnlySpan<int> x = stackalloc int[] { 1, 2, 3 };

// Fixed code.
ReadOnlySpan<int> x = [1, 2, 3];

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 IDE0302
// The code that's violating the rule is on this line.
#pragma warning restore IDE0302

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.IDE0302.severity = none

Az összes kódstílus-szabály letiltásához állítsa be a kategória Style hatáserősségét none-re a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

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

Lásd még: