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


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-ban
when_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.

Lásd még