Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| 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.