コレクション初期化子または式を使用する (IDE0028)

プロパティ
ルール ID IDE0028
Title コレクション初期化子を使用する
カテゴリ スタイル
Subcategory 言語規則 (式レベル基本設定)
該当言語 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 };) を使用するようにコードを変換します。

Note

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 (C# のみ)

プロパティ 説明
オプション名 dotnet_style_prefer_collection_expression
オプションの値 true コレクション式を使用します。
false コレクション式を使用しません。
既定のオプションの値 true

// 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}
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code.
List<int> list = new List<int>
{
    1,
    2,
    3
};
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.AddRange(new[] { 5, 6, 7 });

// Fixed code.
List<int> list = [1, .. new[] { 5, 6, 7 }];
' 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

詳細については、「コード分析の警告を抑制する方法」を参照してください。

関連項目