| プロパティ | [値] |
|---|---|
| ルール識別子 | IDE0028 |
| タイトル | コレクション初期化子を使用する |
| カテゴリ | スタイル |
| サブカテゴリ | 言語規則 (式レベル基本設定) |
| 該当言語 | C# および Visual Basic |
| オプション | dotnet_style_collection_initializer |
dotnet_style_prefer_collection_expression |
概要
このスタイル ルールではコレクション初期化子を使用する必要があり、C# 12 以降を使用している場合はコレクションの初期化にコレクション式を使用します。
.NET 8 (C# 12) 以降のバージョンでは、dotnet_style_prefer_collection_expression オプションが true に設定されている場合、Visual Studio のコード修正では、コレクション初期化コードを変換してコレクション式 (List<int> list = [1, 2, 3];) を使用します。 Visual Basic および .NET 7 (C# 11) 以前のバージョンでは、コード修正はコレクション初期化子 (List<int> list = new List<int> { 1, 2, 3 };) を使用するようにコードを変換します。
メモ
Visual Studio でコード修正を使用する場合、提供される変更のセマンティクスが一部のケースで異なる場合があります。 たとえば、int[] x = new int[] { } はセマンティクスが若干異なる int[] x = []; に置き換えられます。コンパイラでは、新しいインスタンスを作成する代わりに x にシングルトンを使用します。
オプション
コレクションの初期化時にコレクション初期化子とコレクション式を優先するかどうかを指定するには、このルールに関連付けられているオプションの値を設定します。
オプションの構成の詳細については、「オプションの書式」を参照してください。
dotnet_style_collection_initializer
| プロパティ | [値] | 説明 |
|---|---|---|
| オプション名 | dotnet_style_collection_initializer | |
| オプション値 | true |
コレクション初期化子を使うことを推奨します。 |
false |
コレクション初期化子を使用しません。 | |
| 既定のオプションの値 | true |
dotnet_style_prefer_collection_expression
| プロパティ | [値] | 説明 |
|---|---|---|
| オプション名 | dotnet_style_prefer_collection_expression | |
| オプション値 | true | when_types_exactly_match |
コレクション式は、型が完全に一致する場合にのみ使用します (例: List<int> list = new List<int>() { 1, 2 };)。 |
when_types_loosely_match* |
IEnumerable<int> list = new List<int>() { 1, 2 };など、型が緩やかに一致する場合でもコレクション式を使用することを好みます。 対象となる型は、右側の型と一致するか、IEnumerable<T>、ICollection<T>、IList<T>、IReadOnlyCollection<T>、IReadOnlyList<T>のいずれかの型である必要があります。 |
|
false | never |
ルールを無効にします。 | |
| 既定のオプションの値 | when_types_loosely_match* |
*このオプションを使用すると、コード修正によってコードのセマンティクスが変更される可能性があります。
(このオプションは C# にのみ適用されます)。
例
// 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}
警告を抑制する
単一の違反だけを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則を再度有効にします。
#pragma warning disable IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、noneでその重要度を に設定します。
[*.{cs,vb}]
dotnet_diagnostic.IDE0028.severity = none
すべてのコード スタイル規則を無効にするには、Styleでカテゴリ none の重要度を に設定します。
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
関連項目
.NET