Używanie inicjatorów kolekcji lub wyrażeń (IDE0028)
Własność | Wartość |
---|---|
identyfikator reguły | IDE0028 |
Tytuł | Używanie inicjatorów kolekcji |
Kategorii | Styl |
podkategorii |
Reguły języka (preferencje na poziomie wyrażenia) |
odpowiednie języki | C# i Visual Basic |
opcje | dotnet_style_collection_initializer |
dotnet_style_prefer_collection_expression |
Przegląd
Ta reguła stylu dotyczy użycia inicjatorów kolekcji , a jeśli używasz języka C# 12 lub nowszego, wyrażenia kolekcji na potrzeby inicjowania kolekcji.
W programie .NET 8 (C# 12) i nowszych wersjach, jeśli masz ustawioną opcję dotnet_style_prefer_collection_expression
na true
, poprawka kodu w programie Visual Studio konwertuje kod inicjowania kolekcji na użycie wyrażenia kolekcji (List<int> list = [1, 2, 3];
). W języku Visual Basic i na platformie .NET 7 (C# 11) i starszych wersjach poprawka kodu konwertuje kod w celu użycia inicjatora kolekcji (List<int> list = new List<int> { 1, 2, 3 };
).
Nuta
Jeśli używasz poprawki kodu w programie Visual Studio, zmiana, którą oferuje, może mieć różne semantyka w niektórych przypadkach. Na przykład int[] x = new int[] { }
jest zastępowany int[] x = [];
, która ma nieco inną semantyka — kompilator używa pojedynczego elementu do x
zamiast tworzenia nowego wystąpienia.
Opcje
Ustaw wartości skojarzonych opcji dla tej reguły, aby określić, czy inicjatory kolekcji i wyrażenia kolekcji są preferowane podczas inicjowania kolekcji.
Aby uzyskać więcej informacji na temat konfigurowania opcji, zobacz Format opcji.
dotnet_style_collection_initializer
Własność | Wartość | Opis |
---|---|---|
nazwa opcji | dotnet_style_collection_initializer | |
wartości opcji | true |
Preferuj używanie inicjatorów kolekcji. |
false |
Nie preferuj inicjatorów kolekcji. | |
domyślna wartość opcji | true |
dotnet_style_prefer_collection_expression (tylko c#)
Własność | Wartość | Opis |
---|---|---|
nazwa opcji | dotnet_style_prefer_collection_expression | |
wartości opcji | true |
Wolisz używać wyrażeń kolekcji. |
false |
Nie preferuj wyrażeń kolekcji. | |
domyślna wartość opcji | true |
Przykłady
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(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}
Pomijanie ostrzeżenia
Jeśli chcesz pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji .
[*.{cs,vb}]
dotnet_diagnostic.IDE0028.severity = none
Aby wyłączyć wszystkie reguły stylu kodu, ustaw ważność kategorii Style
na none
w pliku konfiguracji .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.
Zobacz też
- wyrażenia kolekcji
- Użyj inicjatorów obiektów (IDE0017)
- Użyj wyrażenia kolekcji dla tablicy (IDE0300)