Gyűjteménykifejezés használata tömbhöz (IDE0300)
Tulajdonság | Érték |
---|---|
Szabályazonosító | IDE0300 |
Cím | Gyűjteménykifejezés használata tömbhöz |
Kategória | Stílus |
Alkategória | Nyelvi szabályok (kifejezésszintű beállítások) |
Alkalmazandó nyelvek | C# 12+ |
Beállítások | dotnet_style_prefer_collection_expression |
Áttekintés
Ez a szabály olyan helyeket jelöl, ahol egy gyűjteménykifejezés használható tömb inicializálásához. Ez a szabály például a kód, például new C[] { ... }
a , new[] { ... }
és C[] c = { ... }
a gyűjteménykifejezési űrlap ([...]
) egyszerűsítését teszi lehetővé.
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. A beállítások konfigurálásával kapcsolatos információkért tekintse meg az Option formátumot.
dotnet_style_prefer_collection_expression
Tulajdonság | Érték | Leírás |
---|---|---|
Beállítás neve | dotnet_style_prefer_collection_expression | |
Beállításértékek | true | when_types_exactly_match |
Inkább csak akkor használjon gyűjteménykifejezéseket, ha a típusok pontosan egyeznek, például int[] i = new int[] { 1, 2, 3 }; . |
when_types_loosely_match (.NET 9 és újabb verziók)* |
A gyűjteménykifejezéseket akkor is érdemes használni, ha például a típusok lazán egyeznek. IEnumerable<int> i = new int[] { 1, 2, 3 }; 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>, , , IList<T>, IReadOnlyCollection<T>IReadOnlyList<T>. ICollection<T> |
|
false | never |
Letiltja a szabályt. | |
Alapértelmezett beállításérték | true a .NET 8-banwhen_types_loosely_match .NET 9 és újabb verziókban |
*Ha ezt a beállítást használja, a kód kijavítása megváltoztathatja a kód szemantikáját. Ha például volt IEnumerable<int> x = new int[] { 1, 2, 3 };
, akkor az eredeti kódban egy tömb jön létre. Az új kódban (IEnumerable<int> x = [1, 2, 3];
) azonban egy belső fordító-szintetizált típus jön létre. Ezt a különbséget akkor lehet megfigyelni, ha csekket is
vagy leadott elemet használ.
Példa
// Code with violations.
int[] i = new int[] { 1, 2, 3 };
IEnumerable<int> j = new int[] { 1, 2, 3 };
// Fixed code.
int[] i = [1, 2, 3];
IEnumerable<int> j = [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 IDE0300
// The code that's violating the rule is on this line.
#pragma warning restore IDE0300
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.IDE0300.severity = none
Az összes kódstílus-szabály letiltásához állítsa be a kategória Style
súlyosságát none
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.