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