Gyűjtemény inicializálóinak vagy kifejezéseinek használata (IDE0028)

Ingatlan Érték
szabályazonosító IDE0028
cím Gyűjtemény inicializálóinak használata
kategória Stílus
alkategória Nyelvi szabályok (kifejezésszintű beállítások)
Alkalmazható nyelvek C# és Visual Basic
Beállítások dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Áttekintés

Ez a stílusszabály az gyűjtemény inicializálóinak használatára vonatkozik, és ha C# 12 vagy újabb verziót használ, gyűjteménykifejezéseket a gyűjtemény inicializálásához.

A .NET 8 (C# 12) és újabb verzióiban, ha a dotnet_style_prefer_collection_expression beállítás truevan beállítva, a Visual Studio kódjavítási gyűjtemény inicializálási kódját gyűjteménykifejezés (List<int> list = [1, 2, 3];) használatára konvertálja. A Visual Basic és a .NET 7 (C# 11) és korábbi verzióiban a kódjavítás átalakítja a kódot úgy, hogy gyűjtemény inicializálót használjon (List<int> list = new List<int> { 1, 2, 3 };).

Jegyzet

Ha a Visual Studióban a kódjavítást használja, az általa kínált módosítás bizonyos esetekben eltérő jelentéssel bírhat. Például a int[] x = new int[] { }-t a int[] x = []; váltja fel, amely kissé eltérő szemantikával rendelkezik – a fordító egyetlen példányt használ a x-ból, ahelyett, hogy új példányt hozna létre.

Beállítások

A szabályhoz tartozó beállítások értékeinek beállításával megadhatja, hogy a gyűjtemények inicializálásakor előnyben részesítik-e a gyűjtemény inicializálóit és a gyűjteménykifejezéseket.

További információ a beállítások konfigurálásáról: Beállításformátum.

dotnet_stílus_gyűjtemény-inicializáló

Ingatlan Érték Leírás
beállításnév dotnet_stílus_gyűjtemény-inicializáló
beállításértékek true Inkább gyűjtemény inicializálókat használjon.
false Ne részesítse előnyben a gyűjtemény-inicializálókat.
alapértelmezett beállításérték true

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)
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 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.

(Ez a beállítás csak a C#-ra vonatkozik.)

Példák

// IDE0028 violation.
List<int> list = new List<int>() { 1, 2, 3 };

// Fixed code (with dotnet_style_prefer_collection_expression = true)
List<int> list = [1, 2, 3];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {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 IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028

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

Az összes kódstílus-szabály letiltásához állítsa 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: