EditorConfig の .NET コーディング規則の設定.NET coding convention settings for EditorConfig

EditorConfig ファイルを使用すれば、コードベースで一貫性のあるコード スタイルを定義および維持できます。You can define and maintain consistent code style in your codebase with the use of an EditorConfig file. EditorConfig には、indent_styleindent_size などのいくつかの主要な書式設定プロパティが含まれています。EditorConfig includes several core formatting properties, such as indent_style and indent_size. Visual Studio では、EditorConfig ファイルを使用して .NET コーディング規則の設定を構成することもできます。In Visual Studio, .NET coding conventions settings can also be configured using an EditorConfig file. EditorConfig ファイルでは、個々の .NET コーディング規則を有効化または無効化し、重要度レベルで規則を適用する程度を構成することができます。EditorConfig files allow you to enable or disable individual .NET coding conventions, and to configure the degree to which you want the convention enforced via a severity level. EditorConfig を使用して、コードベースで整合性を適用する方法の詳細については、「EditorConfig で移植可能なカスタム エディター設定を作成する」を参照してください。To learn more about how to use EditorConfig to enforce consistency in your codebase, read Create portable custom editor options. 例として、.NET コンパイラ プラットフォームの .editorconfig ファイルを参照することもできます。You can also look at the .NET Compiler Platform's .editorconfig file as an example.

サポートされている .NET コーディング規則には次の 3 つのカテゴリがあります。There are three supported .NET coding convention categories:

  • 言語規則Language Conventions
    C# または Visual Basic 言語に関するルール。Rules pertaining to the C# or Visual Basic language. たとえば、変数の定義時の var または明示的な型の使用や、式形式メンバーの優先に関するルールを指定できます。For example, you can specify rules around using var or explicit types when defining variables, or preferring expression-bodied members.
  • 書式規則Formatting Conventions
    コードを読みやすくするためのレイアウトや構造に関するルール。Rules regarding the layout and structure of your code in order to make it easier to read. たとえば、Allman 中かっこや、制御ブロックでのスペースの優先に関するルールを指定できます。For example, you can specify rules around Allman braces, or preferring spaces in control blocks.
  • 名前付け規則Naming Conventions
    コード要素の名前付けに関するルール。Rules regarding the naming of code elements. たとえば、async メソッドは "Async" で終わる必要があるなどと指定できます。For example, you can specify that async methods must end in "Async".

言語規則Language conventions

言語規則のルールには次の形式があります。Rules for language conventions have the following format:

options_name = false|true : none|suggestion|warning|error

各言語規則のルールでは、true (このスタイルを優先する) または false (このスタイルを優先しない)、および重要度を指定する必要があります。For each language convention rule, you must specify either true (prefer this style) or false (do not prefer this style), and a severity. 重要度は、そのスタイルの適用レベルを指定します。The severity specifies the level of enforcement for that style.

次の表に、指定できる重要度の値とその効果をリストします。The following table lists the possible severity values and their effects:

重要度Severity 効果Effect
none または silentnone or silent このルールに違反した場合、ユーザーには何も表示されません。Do not show anything to the user when this rule is violated. ただし、コード生成機能により、このスタイルでコードが生成されます。Code generation features will generate code in this style, however.
修正候補suggestion このスタイル ルールに違反した場合、修正候補としてユーザーに表示されます。When this style rule is violated, show it to the user as a suggestion. 修正候補は、最初の 2 文字の下に 3 つの淡色の点として表示されます。Suggestions appear as three grey dots under the first two characters.
警告warning このスタイル ルールに違反した場合、コンパイラの警告が表示されます。When this style rule is violated, show a compiler warning.
エラーerror このスタイル ルールに違反した場合、コンパイラ エラーが表示されます。When this style rule is violated, show a compiler error.

次のリストに、使用できる言語規則のルールを示します。The following list shows the allowable language convention rules:

.NET コード スタイルの設定.NET code style settings

このセクションのスタイル ルールは、C# および Visual Basic の両方に適用されます。The style rules in this section are applicable to both C# and Visual Basic. 優先するプログラミング言語のコード例を表示するには、ブラウザー ウィンドウの右上隅にあるドロップダウンの [言語] メニューでそれを選択します。To see code examples in your preferred programming language, choose it in the drop-down Language menu at the top-right corner of your browser window.

"This."と "Me." 修飾子"This." and "Me." qualifiers

このスタイル ルール (ルール ID IDE0003 および IDE0009) は、フィールド、プロパティ、メソッド、またはイベントに適用できます。This style rule (rule IDs IDE0003 and IDE0009) can be applied to fields, properties, methods or events. true の値は、C# では this.、Visual Basic では Me. をコード記号の前に付けることを意味します。A value of true means prefer the code symbol to be prefaced with this. in C# or Me. in Visual Basic. false の値は、this.Me. をコード要素の前に_付けない_ ことを意味します。A value of false means prefer the code element not to be prefaced with this. or Me..

次の表には、ルール名、適用可能なプログラミング言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, applicable programming languages, default values, and first supported version of Visual Studio:

ルール名Rule Name 適用可能な言語Applicable languages Visual Studio の既定値Visual Studio default value サポートされているバージョンSupported version
dotnet_style_qualification_for_fielddotnet_style_qualification_for_field C# および Visual BasicC# and Visual Basic false:なしfalse:none Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_qualification_for_propertydotnet_style_qualification_for_property C# および Visual BasicC# and Visual Basic false:なしfalse:none Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_qualification_for_methoddotnet_style_qualification_for_method C# および Visual BasicC# and Visual Basic false:なしfalse:none Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_qualification_for_eventdotnet_style_qualification_for_event C# および Visual BasicC# and Visual Basic false:なしfalse:none Visual Studio 2017 RTWVisual Studio 2017 RTW

dotnet_style_qualification_for_fielddotnet_style_qualification_for_field
このルールが true に設定されている場合、C# では this.、Visual Basic では Me. をフィールドの前に付けます。When this rule is set to true, prefer fields to be prefaced with this. in C# or Me. in Visual Basic.
このルールが false に設定されている場合、this.Me. をフィールドの前に_付けません_。When this rule is set to false, prefer fields not to be prefaced with this. or Me..

コード例:Code examples:

// dotnet_style_qualification_for_field = true
this.capacity = 0;

// dotnet_style_qualification_for_field = false
capacity = 0;
' dotnet_style_qualification_for_field = true
Me.capacity = 0

' dotnet_style_qualification_for_field = false
capacity = 0

dotnet_style_qualification_for_propertydotnet_style_qualification_for_property
このルールが true に設定されている場合、C# では this.、Visual Basic では Me. をプロパティの前に付けます。When this rule is set to true, prefer properties to be prefaced with this. in C# or Me. in Visual Basic.
このルールが false に設定されている場合、this.Me. をプロパティの前に_付けません_。When this rule is set to false, prefer properties not to be prefaced with this. or Me..

コード例:Code examples:

// dotnet_style_qualification_for_property = true
this.ID = 0;

// dotnet_style_qualification_for_property = false
ID = 0;
' dotnet_style_qualification_for_property = true
Me.ID = 0

' dotnet_style_qualification_for_property = false
ID = 0

dotnet_style_qualification_for_methoddotnet_style_qualification_for_method
このルールが true に設定されている場合、C# では this.、Visual Basic では Me. をメソッドの前に付けます。When this rule is set to true, prefer methods to be prefaced with this. in C# or Me. in Visual Basic.
このルールが false に設定されている場合、this.Me. をメソッドの前に_付けません_。When this rule is set to false, prefer methods not to be prefaced with this. or Me..

コード例:Code examples:

// dotnet_style_qualification_for_method = true
this.Display();

// dotnet_style_qualification_for_method = false
Display();
' dotnet_style_qualification_for_method = true
Me.Display()

' dotnet_style_qualification_for_method = false
Display()

dotnet_style_qualification_for_eventdotnet_style_qualification_for_event
このルールが true に設定されている場合、C# では this.、Visual Basic では Me. をイベントの前に付けます。When this rule is set to true, prefer events to be prefaced with this. in C# or Me. in Visual Basic.
このルールが false に設定されている場合、this.Me. をイベントの前に_付けません_。When this rule is set to false, prefer events not to be prefaced with this. or Me..

コード例:Code examples:

// dotnet_style_qualification_for_event = true
this.Elapsed += Handler;

// dotnet_style_qualification_for_event = false
Elapsed += Handler;
' dotnet_style_qualification_for_event = true
AddHandler Me.Elapsed, AddressOf Handler

' dotnet_style_qualification_for_event = false
AddHandler Elapsed, AddressOf Handler

これらのルールは、次のように .editorconfig ファイルに表示されます。These rules could appear in an .editorconfig file as follows:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

型参照のためのフレームワーク型名の代わりの言語キーワードLanguage keywords instead of framework type names for type references

このスタイル ルールは、ローカル変数、メソッド パラメーター、およびクラス メンバーに適用できます。また、型メンバー アクセス式に別個のルールとして適用できます。This style rule can be applied to local variables, method parameters, and class members, or as a separate rule to type member access expressions. true の値は、型を表すキーワードを持つ型に対して、型名 (Int32 など) の代わりに言語キーワード (intInteger など) を使用することを意味します。A value of true means prefer the language keyword (e.g. int or Integer) instead of the type name (e.g. Int32) for types that have a keyword to represent them. false の値は、言語キーワードの代わりに型名を使用することを意味します。A value of false means prefer the type name instead of the language keyword.

次の表には、ルール名、ルール ID、適用可能なプログラミング言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, rules IDs, applicable programming languages, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
dotnet_style_predefined_type_for_locals_parameters_membersdotnet_style_predefined_type_for_locals_parameters_members IDE0012 と IDE0014IDE0012 and IDE0014 C# および Visual BasicC# and Visual Basic true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_predefined_type_for_member_accessdotnet_style_predefined_type_for_member_access IDE0013 と IDE0015IDE0013 and IDE0015 C# および Visual BasicC# and Visual Basic true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW

dotnet_style_predefined_type_for_locals_parameters_membersdotnet_style_predefined_type_for_locals_parameters_members
このルールが true に設定されている場合は、型を表すキーワードを持つ型に対して、型名の代わりに、ローカル変数、メソッド パラメーター、およびクラス メンバーの言語キーワードを使用します。When this rule is set to true, prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them.
このルールが false に設定されている場合は、言語キーワードの代わりに、ローカル変数、メソッド パラメーター、およびクラス メンバーの型名を使用します。When this rule is set to false, prefer the type name for local variables, method parameters, and class members, instead of the language keyword.

コード例:Code examples:

// dotnet_style_predefined_type_for_locals_parameters_members = true
private int _member;

// dotnet_style_predefined_type_for_locals_parameters_members = false
private Int32 _member;
' dotnet_style_predefined_type_for_locals_parameters_members = true
Private _member As Integer

' dotnet_style_predefined_type_for_locals_parameters_members = false
Private _member As Int32

dotnet_style_predefined_type_for_member_access dotnet_style_predefined_type_for_member_access
このルールが true に設定されている場合は、型を表すキーワードを持つ型に対して、型名の代わりに、メンバー アクセス式の言語キーワードを使用します。When this rule is set to true, prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them.
このルールが false に設定されている場合は、言語キーワードの代わりに、メンバー アクセス式の型名を使用します。When this rule is set to false, prefer the type name for member access expressions, instead of the language keyword.

コード例:Code examples:

// dotnet_style_predefined_type_for_member_access = true
var local = int.MaxValue;

// dotnet_style_predefined_type_for_member_access = false
var local = Int32.MaxValue;
' dotnet_style_predefined_type_for_member_access = true
Dim local = Integer.MaxValue

' dotnet_style_predefined_type_for_member_access = false
Dim local = Int32.MaxValue

これらのルールは、次のように .editorconfig ファイルに表示されます。These rules could appear in an .editorconfig file as follows:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

式レベル基本設定Expression-level preferences

このセクションのスタイル ルールは式レベル基本設定に関するものです。これには、オブジェクト初期化子、コレクション初期化子、明示的なタプル名、null 結合式と三項演算子、および null 条件演算子の使用が含まれます。The style rules in this section concern expression-level preferences, including the use of object initializers, collection initializers, explicit tuple names, null coalescing expressions versus ternary operators, and the null-conditional operator.

次の表には、ルール名、ルール ID、適用可能なプログラミング言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, rule IDs, applicable programming languages, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
dotnet_style_object_initializerdotnet_style_object_initializer IDE0017IDE0017 C# および Visual BasicC# and Visual Basic true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_collection_initializerdotnet_style_collection_initializer IDE0028IDE0028 C# および Visual BasicC# and Visual Basic true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_explicit_tuple_namesdotnet_style_explicit_tuple_names IDE0033IDE0033 C# 7.0+ および Visual Basic 15+C# 7.0+ and Visual Basic 15+ true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_coalesce_expressiondotnet_style_coalesce_expression IDE0029IDE0029 C# および Visual BasicC# and Visual Basic true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW
dotnet_style_null_propagationdotnet_style_null_propagation IDE0031IDE0031 C# 6.0+ および Visual Basic 14+C# 6.0+ and Visual Basic 14+ true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW

dotnet_style_object_initializerdotnet_style_object_initializer
このルールが true に設定されている場合、可能であれば、オブジェクト初期化子を使用してオブジェクトを初期化します。When this rule is set to true, prefer objects to be initialized using object initializers when possible.
このルールが false に設定されている場合は、オブジェクト初期化子を使用してオブジェクトを初期化しませんWhen this rule is set to false, prefer objects to not be initialized using object initializers.

コード例:Code examples:

// dotnet_style_object_initializer = true
var c = new Customer() { Age = 21 };

// dotnet_style_object_initializer = false
var c = new Customer();
c.Age = 21;
' dotnet_style_object_initializer = true
Dim c = New Customer() With {.Age = 21}

' dotnet_style_object_initializer = false
Dim c = New Customer()
c.Age = 21

dotnet_style_collection_initializerdotnet_style_collection_initializer
このルールが true に設定されている場合、可能であれば、コレクション初期化子を使用してコレクションを初期化します。When this rule is set to true, prefer collections to be initialized using collection initializers when possible.
このルールが false に設定されている場合は、コレクション初期化子を使用してコレクションを初期化しませんWhen this rule is set to false, prefer collections to not be initialized using collection initializers.

コード例:Code examples:

// dotnet_style_collection_initializer = true
var list = new List<int> { 1, 2, 3 };

// dotnet_style_collection_initializer = false
var list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
' dotnet_style_collection_initializer = true
Dim list = New List(Of Integer) From {1, 2, 3}

' dotnet_style_collection_initializer = false
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

dotnet_style_explicit_tuple_namesdotnet_style_explicit_tuple_names
このルールが true に設定されている場合は、ItemX プロパティではなくタプル名を使用します。When this rule is set to true, prefer tuple names to ItemX properties.
このルールが false に設定されている場合は、タプル名ではなく ItemX プロパティを使用します。When this rule is set to false, prefer ItemX properties to tuple names.

コード例:Code examples:

// dotnet_style_explicit_tuple_names = true
(string name, int age) customer = GetCustomer();
var name = customer.name;

// dotnet_style_explicit_tuple_names = false
(string name, int age) customer = GetCustomer();
var name = customer.Item1;
 ' dotnet_style_explicit_tuple_names = true
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.name

' dotnet_style_explicit_tuple_names = false
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.Item1

dotnet_style_coalesce_expressiondotnet_style_coalesce_expression
このルールが true に設定されている場合は、三項演算子チェックではなく null 結合式を使用します。When this rule is set to true, prefer null coalescing expressions to ternary operator checking.
このルールが false に設定されている場合は、null 結合式ではなく三項演算子チェックを使用します。When this rule is set to false, prefer ternary operator checking to null coalescing expressions.

コード例:Code examples:

// dotnet_style_coalesce_expression = true
var v = x ?? y;

// dotnet_style_coalesce_expression = false
var v = x != null ? x : y; // or
var v = x == null ? y : x;
' dotnet_style_coalesce_expression = true
Dim v = If(x, y)

' dotnet_style_coalesce_expression = false
Dim v = If(x Is Nothing, y, x) ' or
Dim v = If(x IsNot Nothing, x, y)

dotnet_style_null_propagationdotnet_style_null_propagation
このルールが true に設定されている場合、可能であれば、null 条件演算子を使用します。When this rule is set to true, prefer to use null-conditional operator when possible.
このルールが false に設定されている場合、可能であれば、三項 null チェックを使用します。When this rule is set to false, prefer to use ternary null checking where possible.

コード例:Code examples:

// dotnet_style_null_propagation = true
var v = o?.ToString();

// dotnet_style_null_propagation = false
var v = o == null ? null : o.ToString(); // or
var v = o != null ? o.String() : null;
' dotnet_style_null_propagation = true
Dim v = o?.ToString()

' dotnet_style_null_propagation = false
Dim v = If(o Is Nothing, Nothing, o.ToString()) ' or
Dim v = If(o IsNot Nothing, o.ToString(), Nothing)

これらのルールは、次のように .editorconfig ファイルに表示されます。These rules could appear in an .editorconfig file as follows:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion

C# コード スタイルの設定C# code style settings

このセクションのスタイル ルールは、C# のみに適用されます。The style rules in this section are applicable to C# only.

暗黙的な型と明示的な型Implicit and explicit types

このセクションのスタイル ルール (ルール ID IDE0007 および IDE0008) は、変数宣言での var キーワードと明示的な型の使用に関するものです。The style rules in this section (rule IDs IDE0007 and IDE0008) concern the use of the var keyword versus an explicit type in a variable declaration. このルールは、ビルトイン型、型が明らかな場合、および他の場所に個別に適用できます。This rule can be applied separately to built-in types, when the type is apparent, and elsewhere.

次の表には、ルール名、適用可能なプログラミング言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, applicable programming languages, default values, and first supported version of Visual Studio:

ルール名Rule Name 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_style_var_for_built_in_typescsharp_style_var_for_built_in_types C#C# true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_var_when_type_is_apparentcsharp_style_var_when_type_is_apparent C#C# true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_var_elsewherecsharp_style_var_elsewhere C#C# true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW

csharp_style_var_for_built_in_typescsharp_style_var_for_built_in_types
このルールが true に設定されている場合は、int などのビルトイン システム型で変数を宣言する場合に var を使用します。When this rule is set to true, prefer var is used to declare variables with built-in system types such as int.
このルールが false に設定されている場合は、int などのビルトイン システム型で変数を宣言する場合に var ではなく明示的な型を使用します。When this rule is set to false, prefer explicit type over var to declare variables with built-in system types such as int.

コード例:Code examples:

// csharp_style_var_for_built_in_types = true
var x = 5;

// csharp_style_var_for_built_in_types = false
int x = 5;

csharp_style_var_when_type_is_apparentcsharp_style_var_when_type_is_apparent
このルールが true に設定されている場合、宣言式の右側で型が既に示されているときに var を使用します。When this rule is set to true, prefer var when the type is already mentioned on the right-hand side of a declaration expression.
このルールが false に設定されている場合、宣言式の右側で型が既に示されているときに var ではなく明示的な型を使用します。When this rule is set to false, prefer explicit type over var when the type is already mentioned on the right-hand side of a declaration expression.

コード例:Code examples:

// csharp_style_var_when_type_is_apparent = true
var obj = new Customer();

// csharp_style_var_when_type_is_apparent = false
Customer obj = new Customer();

csharp_style_var_elsewherecsharp_style_var_elsewhere
このルールが true に設定されている場合は、別のコード スタイル ルールでオーバーライドされない限り、すべての場合に明示的な型ではなく var を使用します。When this rule is set to true, prefer var over explicit type in all cases, unless overridden by another code style rule.
このルールが false に設定されている場合は、別のコード スタイル ルールでオーバーライドされない限り、すべての場合に var ではなく明示的な型を使用します。When this rule is set to false, prefer explicit type over var in all cases, unless overridden by another code style rule.

コード例:Code examples:

// csharp_style_var_elsewhere = true
var f = this.Init();

// csharp_style_var_elsewhere = false
bool f = this.Init();

editorconfig ファイルの例:Example .editorconfig file:

# CSharp code style settings:
[*.cs]
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = true:suggestion

式形式のメンバーExpression-bodied members

このセクションのスタイル ルールは、ロジックが単一の式で構成される場合の式形式のメンバーの使用に関するものです。The style rules in this section concern the use of expression-bodied members when the logic consists of a single expression. このルールは、メソッド、コンストラクター、演算子、プロパティ、インデクサー、およびアクセサーに適用できます。This rule can be applied to methods, constructors, operators, properties, indexers, and accessors.

次の表には、ルール名、ルール ID、適用可能な言語バージョン、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, rule IDs, applicable language versions, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_style_expression_bodied_methodscsharp_style_expression_bodied_methods IDE0022IDE0022 C# 6.0+C# 6.0+ false:なしfalse:none Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_expression_bodied_constructorscsharp_style_expression_bodied_constructors IDE0021IDE0021 C# 7.0+C# 7.0+ false:なしfalse:none Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_expression_bodied_operatorscsharp_style_expression_bodied_operators IDE0023 と IDE0024IDE0023 and IDE0024 C# 7.0+C# 7.0+ false:なしfalse:none Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_expression_bodied_propertiescsharp_style_expression_bodied_properties IDE0025IDE0025 C# 7.0+C# 7.0+ true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_expression_bodied_indexerscsharp_style_expression_bodied_indexers IDE0026IDE0026 C# 7.0+C# 7.0+ true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_expression_bodied_accessorscsharp_style_expression_bodied_accessors IDE0027IDE0027 C# 7.0+C# 7.0+ true:なしtrue:none Visual Studio 2017 RTWVisual Studio 2017 RTW

csharp_style_expression_bodied_methodscsharp_style_expression_bodied_methods
このルールが true に設定されている場合、メソッドに式形式メンバーを使用します。When this rule is set to true, prefer expression-bodied members for methods.
このルールが false に設定されている場合、メソッドに式形式メンバーを使用しません。When this rule is set to false, do not prefer expression-bodied members for methods.

コード例:Code examples:

// csharp_style_expression_bodied_methods = true
public int GetAge() => this.Age;

// csharp_style_expression_bodied_methods = false
public int GetAge() { return this.Age; }

csharp_style_expression_bodied_constructorscsharp_style_expression_bodied_constructors
このルールが true に設定されている場合、コンストラクターに式形式メンバーを使用します。When this rule is set to true, prefer expression-bodied members for constructors.
このルールが false に設定されている場合、コンストラクターに式形式メンバーを使用しません。When this rule is set to false, do not prefer expression-bodied members for constructors.

コード例:Code examples:

// csharp_style_expression_bodied_constructors = true
public Customer(int age) => Age = age;

// csharp_style_expression_bodied_constructors = false
public Customer(int age) { Age = age; }

csharp_style_expression_bodied_operatorscsharp_style_expression_bodied_operators
このルールが true に設定されている場合、演算子に式形式メンバーを使用します。When this rule is set to true, prefer expression-bodied members for operators.
このルールが false に設定されている場合、演算子に式形式メンバーを使用しません。When this rule is set to false, do not prefer expression-bodied members for operators.

コード例:Code examples:

// csharp_style_expression_bodied_operators = true
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
    => new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);

// csharp_style_expression_bodied_operators = false
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
{ return new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary); }

csharp_style_expression_bodied_propertiescsharp_style_expression_bodied_properties
このルールが true に設定されている場合、プロパティに式形式メンバーを使用します。When this rule is set to true, prefer expression-bodied members for properties.
このルールが false に設定されている場合、プロパティに式形式メンバーを使用しません。When this rule is set to false, do not prefer expression-bodied members for properties.

コード例:Code examples:

// csharp_style_expression_bodied_properties = true
public int Age => _age;

// csharp_style_expression_bodied_properties = false
public int Age { get { return _age; }}

csharp_style_expression_bodied_indexerscsharp_style_expression_bodied_indexers
このルールが true に設定されている場合、インデクサーに式形式メンバーを使用します。When this rule is set to true, prefer expression-bodied members for indexers.
このルールが false に設定されている場合、インデクサーに式形式メンバーを使用しません。When this rule is set to false, do not prefer expression-bodied members for indexers.

コード例:Code examples:

// csharp_style_expression_bodied_indexers = true
public T this[int i] => _value[i];

// csharp_style_expression_bodied_indexers = false
public T this[int i] { get { return _values[i]; } }

csharp_style_expression_bodied_accessorscsharp_style_expression_bodied_accessors
このルールが true に設定されている場合、アクセサーに式形式メンバーを使用します。When this rule is set to true, prefer expression-bodied members for accessors.
このルールが false に設定されている場合、アクセサーに式形式メンバーを使用しません。When this rule is set to false, do not prefer expression-bodied members for accessors.

コード例:Code examples:

// csharp_style_expression_bodied_accessors = true
public int Age { get => _age; set => _age = value; }

// csharp_style_expression_bodied_accessors = false
public int Age { get { return _age; } set { _age = value; } }

editorconfig ファイルの例:Example .editorconfig file:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_methods = false:none
csharp_style_expression_bodied_constructors = false:none
csharp_style_expression_bodied_operators = false:none
csharp_style_expression_bodied_properties = true:none
csharp_style_expression_bodied_indexers = false:none
csharp_style_expression_bodied_accessors = false:none

パターン マッチングPattern matching

このセクションのスタイル ルールは、C# でのパターン マッチングの使用に関するものです。The style rules in this section concern the use of pattern matching in C#.

次の表には、ルール名、ルール ID、適用可能な言語バージョン、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, rule IDs, applicable language versions, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_style_pattern_matching_over_is_with_cast_checkcsharp_style_pattern_matching_over_is_with_cast_check IDE0020IDE0020 C# 7.0+C# 7.0+ true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_pattern_matching_over_as_with_null_checkcsharp_style_pattern_matching_over_as_with_null_check IDE0019IDE0019 C# 7.0+C# 7.0+ true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW

csharp_style_pattern_matching_over_is_with_cast_checkcsharp_style_pattern_matching_over_is_with_cast_check
このルールが true に設定されている場合、is 式と型キャストの代わりにパターン マッチングを使用します。When this rule is set to true, prefer pattern matching instead of is expressions with type casts.
このルールが false に設定されている場合、パターン マッチングの代わりに is 式と型キャストを使用します。When this rule is set to false, prefer is expressions with type casts instead of pattern matching.

コード例:Code examples:

// csharp_style_pattern_matching_over_is_with_cast_check = true
if (o is int i) {...}

// csharp_style_pattern_matching_over_is_with_cast_check = false
if (o is int) {var i = (int)o; ... }

csharp_style_pattern_matching_over_as_with_null_checkcsharp_style_pattern_matching_over_as_with_null_check
このルールが true に設定されている場合、as 式と null チェックの代わりにパターン マッチングを使用し、何かが特定の型であるか判断します。When this rule is set to true, prefer pattern matching instead of as expressions with null checks to determine if something is of a particular type.
このルールが false に設定されている場合、パターン マッチングの代わりに as 式と null チェックを使用し、何かが特定の型であるか判断します。When this rule is set to false, prefer as expressions with null checks instead of pattern matching to determine if something is of a particular type.

コード例:Code examples:

// csharp_style_pattern_matching_over_as_with_null_check = true
if (o is string s) {...}

// csharp_style_pattern_matching_over_as_with_null_check = false
var s = o as string;
if (s != null) {...}

editorconfig ファイルの例:Example .editorconfig file:

# CSharp code style settings:
[*.cs]
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion

インライン変数宣言Inlined variable declarations

このスタイル ルールは、out 変数がインラインで宣言されるかどうかに関するものです。This style rule concerns whether out variables are declared inline or not. C# 7 以降では、別の変数宣言内ではなく、メソッド呼び出しの引数リスト内で out 変数を宣言できます。Starting in C# 7, you can declare an out variable in the argument list of a method call, rather than in a separate variable declaration.

次の表には、ルール名、ルール ID、適用可能な言語バージョン、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule name, rule ID, applicable language versions, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_style_inlined_variable_declarationcsharp_style_inlined_variable_declaration IDE0018IDE0018 C# 7.0+C# 7.0+ true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW

csharp_style_inlined_variable_declarationcsharp_style_inlined_variable_declaration
このルールが true に設定されている場合、可能であれば、メソッド呼び出しの引数リスト内で out 変数をインラインで宣言します。When this rule is set to true, prefer out variables to be declared inline in the argument list of a method call when possible.
このルールが false に設定されている場合は、メソッド呼び出しの前に out 変数を宣言します。When this rule is set to false, prefer out variables to be declared before the method call.

コード例:Code examples:

// csharp_style_inlined_variable_declaration = true
if (int.TryParse(value, out int i) {...}

// csharp_style_inlined_variable_declaration = fale
int i;
if (int.TryParse(value, out i) {...}

editorconfig ファイルの例:Example .editorconfig file:

# CSharp code style settings:
[*.cs]
csharp_style_inlined_variable_declaration = true:suggestion

式レベル基本設定Expression-level preferences

このスタイル ルールは、コンパイラが式の型を推定できる場合の、既定の値式での default リテラルの使用に関するものです。This style rule concerns using the default literal for default value expressions when the compiler can infer the type of the expression.

次の表には、ルール名、ルール ID、適用可能な言語バージョン、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule name, rule ID, applicable language versions, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_prefer_simple_default_expressioncsharp_prefer_simple_default_expression IDE0034IDE0034 C# 7.1+C# 7.1+ true:提案true:suggestion Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3

csharp_prefer_simple_default_expressioncsharp_prefer_simple_default_expression
このルールが true に設定されている場合は、default(T) より default を優先します。When this rule is set to true, prefer default over default(T).
このルールが false に設定されている場合は、default より default(T) を優先します。When this rule is set to false, prefer default(T) over default.

コード例:Code examples:

// csharp_prefer_simple_default_expression = true
void DoWork(CancellationToken cancellationToken = default) { ... }

// csharp_prefer_simple_default_expression = false
void DoWork(CancellationToken cancellationToken = default(CancellationToken)) { ... }

editorconfig ファイルの例:Example .editorconfig file:

# CSharp code style settings:
[*.cs]
csharp_prefer_simple_default_expression = true:suggestion

"null" チェック設定"Null" checking preferences

これらのスタイル ルールは、throw 式または throw ステートメントの使用や、null チェックを実行するか、ラムダ式の呼び出し時に条件付き合体演算子 (?.) を使用するかなどの、null チェックの構文に関するものです。These style rules concern the syntax around null checking, including using throw expressions or throw statements, and whether to perform a null check or use the conditional coalescing operator (?.) when invoking a lambda expression.

次の表には、ルール名、ルール ID、適用可能な言語バージョン、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, rule IDs, applicable language versions, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_style_throw_expressioncsharp_style_throw_expression IDE0016IDE0016 C# 7.0+C# 7.0+ true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW
csharp_style_conditional_delegate_callcsharp_style_conditional_delegate_call IDE0041IDE0041 C# 6.0+C# 6.0+ true:提案true:suggestion Visual Studio 2017 RTWVisual Studio 2017 RTW

csharp_style_throw_expressioncsharp_style_throw_expression
このルールが true に設定されている場合は、throw ステートメントの代わりに throw 式を使用します。When this rule is set to true, prefer to use throw expressions instead of throw statements.
このルールが false に設定されている場合は、throw 式の代わりに throw ステートメントを使用します。When this rule is set to false, prefer to use throw statements instead of throw expressions.

コード例:Code examples:

// csharp_style_throw_expression = true
this.s = s ?? throw new ArgumentNullException(nameof(s));

// csharp_style_throw_expression = false
if (s == null) { throw new ArgumentNullException(nameof(s)); }
this.s = s;

csharp_style_conditional_delegate_call csharp_style_conditional_delegate_call
このルールが true に設定されている場合は、null チェックを実行する代わりに、ラムダ式の呼び出し時に条件付き合体演算子 (?.) を使用します。When this rule is set to true, prefer to use the conditional coalescing operator (?.) when invoking a lambda expression, instead of performing a null check.
このルールが false に設定されている場合は、条件付き合体演算子 (?.) を使用する代わりに、ラムダ式を呼び出す前に null チェックを実行します。When this rule is set to false, prefer to perform a null check before invoking a lambda expression, instead of using the conditional coalescing operator (?.).

コード例:Code examples:

// csharp_style_conditional_delegate_call = true
func?.Invoke(args);

// csharp_style_conditional_delegate_call = false
if (func != null) { func(args); }

editorconfig ファイルの例:Example .editorconfig file:

# CSharp code style settings:
[*.cs]
csharp_style_throw_expression = true:suggestions:
csharp_style_conditional_delegate_call = false:suggestion

コード ブロック基本設定Code block preferences

このスタイル ルールは、コード ブロックを囲む中かっこ { } の使用に関するものです。This style rule concerns the use of curly braces { } to surround code blocks.

次の表には、ルール名、ルール ID、適用可能な言語バージョン、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule name, rule ID, applicable language versions, default values, and first supported version of Visual Studio:

ルール名Rule Name ルール IDRule ID 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_prefer_bracescsharp_prefer_braces IDE0011IDE0011 C#C# true:なしtrue:none Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3

csharp_prefer_braces csharp_prefer_braces
このルールが true に設定されている場合は、コードが 1 行であっても中かっこを使用します。When this rule is set to true, prefer curly braces even for one line of code.
このルールが false に設定されている場合、中かっこは使用しません (許可されている場合)。When this rule is set to false, prefer no curly braces if allowed.

コード例:Code examples:

// csharp_prefer_braces = true
if (test) { this.Display(); }

// csharp_prefer_braces = false
if (test) this.Display();

editorconfig ファイルの例:Example .editorconfig file:

# CSharp code style settings:
[*.cs]
csharp_prefer_braces = true:none

書式規則Formatting conventions

書式規則のほとんどのルールには次の形式があります。Most of the rules for formatting conventions have the following format:

rule_name = false|true

true (このスタイルを優先する) または false (このスタイルを優先しない) を指定します。You specify either true (prefer this style) or false (do not prefer this style). 重要度は指定しません。You do not specify a severity. いくつかのルールでは、true や false の代わりに、他の値を指定して、ルールを適用するタイミングと場所を示します。For a few rules, instead of true or false, you specify other values to describe when and where to apply the rule.

Visual Studio で使用可能な書式規則のルールを以下にリストします。The following list shows the formatting convention rules available in Visual Studio:

  • .NET 書式設定.NET Formatting Settings
  • C# 書式設定C# Formatting Settings
    • 改行オプションNewline Options
      • csharp_new_line_before_open_bracecsharp_new_line_before_open_brace
      • csharp_new_line_before_elsecsharp_new_line_before_else
      • csharp_new_line_before_catchcsharp_new_line_before_catch
      • csharp_new_line_before_finallycsharp_new_line_before_finally
      • csharp_new_line_before_members_in_object_initializerscsharp_new_line_before_members_in_object_initializers
      • csharp_new_line_before_members_in_anonymous_typescsharp_new_line_before_members_in_anonymous_types
      • csharp_new_line_between_query_expression_clausescsharp_new_line_between_query_expression_clauses
    • インデント オプションIndentation Options
      • csharp_indent_case_contentscsharp_indent_case_contents
      • csharp_indent_switch_labelscsharp_indent_switch_labels
      • csharp_indent_labelscsharp_indent_labels
    • スペース オプションSpacing Options
      • csharp_space_after_castcsharp_space_after_cast
      • csharp_space_after_keywords_in_control_flow_statementscsharp_space_after_keywords_in_control_flow_statements
      • csharp_space_between_method_declaration_parameter_list_parenthesescsharp_space_between_method_declaration_parameter_list_parentheses
      • csharp_space_between_method_call_parameter_list_parenthesescsharp_space_between_method_call_parameter_list_parentheses
      • csharp_space_between_parenthesescsharp_space_between_parentheses
    • 折り返しオプションWrapping Options
      • csharp_preserve_single_line_statementscsharp_preserve_single_line_statements
      • csharp_preserve_single_line_blockscsharp_preserve_single_line_blocks

.NET 書式設定.NET formatting settings

このセクションの書式ルールは、C# および Visual Basic に適用されます。The formatting rules in this section are applicable to C# and Visual Basic.

using の整理Organize usings

この書式ルールは、他の using ディレクティブに対する System.* using ディレクティブの配置に関するものです。This formatting rule concerns the placement of System.* using directives with respect to other using directives.

次の表には、ルール名、適用可能な言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule name, applicable languages, default value, and first supported version of Visual Studio:

ルール名Rule Name 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
dotnet_sort_system_directives_firstdotnet_sort_system_directives_first C# および Visual BasicC# and Visual Basic truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3

dotnet_sort_system_directives_firstdotnet_sort_system_directives_first
このルールが true に設定されている場合、System.* using ディレクティブをアルファベット順に並べ替え、他の using の前に配置します。When this rule is set to true, sort System.* using directives alphabetically, and place them before other usings.
このルールが false に設定されている場合は、System.* using ディレクティブを他の using ディレクティブの前に配置しません。When this rule is set to false, do not place System.* using directives before other using directives.

コード例:Code examples:

// dotnet_sort_system_directives_first = true
using System.Collections.Generic;
using System.Threading.Tasks;
using Octokit;

// dotnet_sort_system_directives_first = false
using System.Collections.Generic;
using Octokit;
using System.Threading.Tasks;

editorconfig ファイルの例:Example .editorconfig file:

# .NET formatting settings:
[*.{cs,vb}]
dotnet_sort_system_directives_first = true

C# 書式設定C# formatting settings

このセクションの書式ルールは、C# コードにのみ適用されます。The formatting rules in this section apply only to C# code.

改行オプションNewline Options

これらの書式ルールは、コードの書式を設定する場合の改行の使用に関するものです。These formatting rules concern the use of new lines to format code.

次の表には、"改行" のルール名、適用可能な言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the "new line" rule names, applicable languages, default values, and first supported version of Visual Studio:

ルール名Rule Name 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_new_line_before_open_bracecsharp_new_line_before_open_brace C#C# すべてall Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_new_line_before_elsecsharp_new_line_before_else C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_new_line_before_catchcsharp_new_line_before_catch C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_new_line_before_finallycsharp_new_line_before_finally C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_new_line_before_members_in_object_initializerscsharp_new_line_before_members_in_object_initializers C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_new_line_before_members_in_anonymous_typescsharp_new_line_before_members_in_anonymous_types C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_new_line_between_query_expression_clausescsharp_new_line_between_query_expression_clauses C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3

csharp_new_line_before_open_bracecsharp_new_line_before_open_brace
このルールは、左中かっこ ({) を前のコードと同じ行に配置するか、新しい行に配置するかに関するものです。This rule concerns whether an open brace { should be placed on the same line as the preceding code, or on a new line. このルールの場合、truefalse は指定しません。For this rule, you do not specify true or false. 代わりに、allnone、または methodsproperties などの 1 つ以上のコード要素を指定して、このルールを適用する必要があるタイミングを定義します。Instead you specify all, none, or one or more code elements such as methods or properties, to define when this rule should be applied. 使用可能な値の完全なリストを以下の表に示します。The complete list of allowable values is shown in the following table:

Value 説明Description
accessors、anonymous_methods、anonymous_types、control_blocks、events、indexers、lambdas、local_functions、methods、object_collection、properties、types accessors, anonymous_methods, anonymous_types, control_blocks, events, indexers, lambdas, local_functions, methods, object_collection, properties, types.
(種類が複数ある場合は、"," で区切ります)。(For multiple kinds, separate with ',').
中かっこは指定されたコード要素の新しい行に配置する必要があります ("Allman" スタイルともいう)。Require braces to be on a new line for the specified code elements (also known as "Allman" style)
すべてall 中かっこはすべての式の新しい行に配置する必要があります ("Allman" スタイル)。Require braces to be on a new line for all expressions ("Allman" style)
nonenone 中かっこはすべての式の同じ行に配置する必要があります ("K&R")。Require braces to be on the same line for all expressions ("K&R")

コード例:Code examples:

// csharp_new_line_before_open_brace = all
void MyMethod() 
{
    if (...) 
    {
        ...
    }
}

// csharp_new_line_before_open_brace = none
void MyMethod() {
    if (...) {
        ...
    }
}

csharp_new_line_before_elsecsharp_new_line_before_else
このルールが true に設定されている場合は、else ステートメントを新しい行に配置します。When this rule is set to true, place else statements on a new line.
このルールが false に設定されている場合は、else ステートメントを同じ行に配置します。When this rule is set to false, place else statements on the same line.

コード例:Code examples:

// csharp_new_line_before_else = true
if (...) {
    ...
}
else {
    ...
}

// csharp_new_line_before_else = false
if (...) {
    ...
} else {
    ...
}

csharp_new_line_before_catch csharp_new_line_before_catch
このルールが true に設定されている場合は、catch ステートメントを新しい行に配置します。When this rule is set to true, place catch statements on a new line.
このルールが false に設定されている場合は、catch ステートメントを同じ行に配置します。When this rule is set to false, place catch statements on the same line.

コード例:Code examples:

// csharp_new_line_before_catch = true
try {
    ...
}
catch (Exception e) {
    ...
}

// csharp_new_line_before_catch = false
try {
    ...
} catch (Exception e) {
    ...
}

csharp_new_line_before_finally csharp_new_line_before_finally
このルールが true に設定されている場合は、finally ステートメントを右中かっこの後の新しい行に配置する必要があります。When this rule is set to true, require finally statements to be on a new line after the closing brace.
このルールが false に設定されている場合は、finally ステートメントを右中かっこと同じ行に配置する必要があります。When this rule is set to false, require finally statements to be on the same line as the closing brace.

コード例:Code examples:

// csharp_new_line_before_finally = true
try {
    ...
}
catch (Exception e) {
    ...
}
finally {
    ...
}

// csharp_new_line_before_finally = false
try {
    ...
} catch (Exception e) {
    ...
} finally {
    ...
}

csharp_new_line_before_members_in_object_initializers csharp_new_line_before_members_in_object_initializers
このルールが true に設定されている場合は、オブジェクト初期化子のメンバーを別の行に配置する必要があります。When this rule is set to true, require members of object intializers to be on separate lines.
このルールが false に設定されている場合は、オブジェクト初期化子のメンバーを同じ行に配置する必要があります。When this rule is set to false, require members of object initializers to be on the same line.

コード例:Code examples:

// csharp_new_line_before_members_in_object_initializers = true
var z = new B()
{
    A = 3,
    B = 4
}

// csharp_new_line_before_members_in_object_initializers = false
var z = new B()
{
    A = 3, B = 4
}

csharp_new_line_before_members_in_anonymous_types csharp_new_line_before_members_in_anonymous_types
このルールが true に設定されている場合は、匿名型のメンバーを別の行に配置する必要があります。When this rule is set to true, require members of anonymous types to be on separate lines.
このルールが false に設定されている場合は、匿名型のメンバーを同じ行に配置する必要があります。When this rule is set to false, require members of anonymous types to be on the same line.

コード例:Code examples:

// csharp_new_line_before_members_in_anonymous_types = true
var z = new
{
    A = 3,
    B = 4
}

// csharp_new_line_before_members_in_anonymous_types = false
var z = new
{
    A = 3, B = 4
}

csharp_new_line_between_query_expression_clauses csharp_new_line_between_query_expression_clauses
このルールが true に設定されている場合は、クエリ式の句の要素を別の行に配置する必要があります。When this rule is set to true, require elements of query expression clauses to be on separate lines.
このルールが false に設定されている場合は、クエリ式の句の要素を同じ行に配置する必要があります。When this rule is set to false, require elements of query expression clauses to be on the same line.

コード例:Code examples:

// csharp_new_line_between_query_expression_clauses = true
var q = from a in e
        from b in e
        select a * b;

// csharp_new_line_between_query_expression_clauses = false
var q = from a in e from b in e
        select a * b;

editorconfig ファイルの例:Example .editorconfig file:

# CSharp formatting settings:
[*.cs]
csharp_new_line_before_open_brace = methods, properties, control_blocks, types
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true

インデント オプションIndentation options

これらの書式ルールは、コードの書式を設定する場合のインデントの使用に関するものです。These formatting rules concern the use of indentation to format code.

次の表には、ルール名、適用可能な言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, applicable languages, default values, and first supported version of Visual Studio:

ルール名Rule Name 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_indent_case_contentscsharp_indent_case_contents C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_indent_switch_labelscsharp_indent_switch_labels C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_indent_labelscsharp_indent_labels C#C# no_changeno_change Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3

csharp_indent_case_contentscsharp_indent_case_contents
このルールが true に設定されている場合は、switch case の内容をインデントします。When this rule is set to true, indent switch case contents.
このルールが false に設定されている場合は、switch case の内容をインデントしません。When this rule is set to false, do not indent switch case contents.

コード例:Code examples:

// csharp_indent_case_contents = true
switch(c) {
    case Color.Red:
        Console.WriteLine("The color is red");
        break;
    case Color.Blue:
        Console.WriteLine("The color is blue");
        break;
    default:
        Console.WriteLine("The color is unknown.");
        break;
}

// csharp_indent_case_contents = false
switch(c) {
    case Color.Red:
    Console.WriteLine("The color is red");
    break;
    case Color.Blue:
    Console.WriteLine("The color is blue");
    break;
    default:
    Console.WriteLine("The color is unknown.");
    break;
}

csharp_indent_switch_labelscsharp_indent_switch_labels
このルールが true に設定されている場合は、switch ラベルをインデントします。When this rule is set to true, indent switch labels.
このルールが false に設定されている場合は、switch ラベルをインデントしません。When this rule is set to false, do not indent switch labels.

コード例:Code examples:

// csharp_indent_switch_labels = true
switch(c) {
    case Color.Red:
        Console.WriteLine("The color is red");
        break;
    case Color.Blue:
        Console.WriteLine("The color is blue");
        break;
    default:
        Console.WriteLine("The color is unknown.");
        break;
}

// csharp_indent_switch_labels = false
switch(c) {
case Color.Red:
    Console.WriteLine("The color is red");
    break;
case Color.Blue:
    Console.WriteLine("The color is blue");
    break;
default:
    Console.WriteLine("The color is unknown.");
    break;
}

csharp_indent_labelscsharp_indent_labels
このルールでは truefalse の値は受け入れません。代わりに、以下の表の値を受け入れます。This rule does not accept a true or false value; instead it accepts a value from the following table:

Value 説明Description
flush_leftflush_left ラベルは左端の列に配置されますLabels are placed at the leftmost column
one_less_than_currentone_less_than_current ラベルは、現在のコンテキストのインデントを 1 つ減らした位置に配置されますLabels are placed at one less indent to the current context
no_changeno_change ラベルは、現在のコンテキストと同じインデントで配置されますLabels are placed at the same indent as the current context

コード例:Code examples:

// csharp_indent_labels= flush_left
class C
{
    private string MyMethod(...) 
    {
        if (...) {
            goto error;
        }
error:
        throw new Exception(...);
    }
}

// csharp_indent_labels = one_less_than_current
class C
{
    private string MyMethod(...) 
    {
        if (...) {
            goto error;
        }
    error:
        throw new Exception(...);
    }
}

// csharp_indent_labels= no_change
class C
{
    private string MyMethod(...) 
    {
        if (...) {
            goto error;
        }
        error:
        throw new Exception(...);
    }
}

editorconfig ファイルの例:Example .editorconfig file:

# CSharp formatting settings:
[*.cs]
csharp_indent_case_contents = true
csharp_indent_switch_labels = true
csharp_indent_labels = flush_left

スペース オプションSpacing Options

これらの書式ルールは、コードの書式を設定する場合の空白文字の使用に関するものです。These formatting rules concern the use of space characters to format code.

次の表には、ルール名、適用可能な言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, applicable languages, default values, and first supported version of Visual Studio:

ルール名Rule Name 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_space_after_castcsharp_space_after_cast C#C# falsefalse Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_space_after_keywords_in_control_flow_statementscsharp_space_after_keywords_in_control_flow_statements C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_space_between_method_declaration_parameter_list_parenthesescsharp_space_between_method_declaration_parameter_list_parentheses C#C# falsefalse Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_space_between_method_call_parameter_list_parenthesescsharp_space_between_method_call_parameter_list_parentheses C#C# falsefalse Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_space_between_parenthesescsharp_space_between_parentheses C#C# falsefalse Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3

csharp_space_after_castcsharp_space_after_cast
このルールが true に設定されている場合は、キャストと値の間にスペースが必要です。When this rule is set to true, require a space between a cast and the value.
このルールが false に設定されている場合は、キャストと値の間にスペースは必要_ありません_。When this rule is set to false, require no space between the cast and the value.

コード例:Code examples:

// csharp_space_after_cast = true
int y = (int) x;

// csharp_space_after_cast = false
int y = (int)x;

csharp_space_after_keywords_in_control_flow_statementscsharp_space_after_keywords_in_control_flow_statements
このルールが true に設定されている場合は、for ループなど、制御フロー ステートメントのキーワードの後にスペースが必要です。When this rule is set to true, require a space after a keyword in a control flow statement such as a for loop.
このルールが false に設定されている場合は、for ループなど、制御フロー ステートメントのキーワードの後にスペースは必要_ありません_。When this rule is set to false, require no space after a keyword in a control flow statement such as a for loop.

コード例:Code examples:

// csharp_space_after_keywords_in_control_flow_statements = true
for (int i;i<x;i++) { ... }

// csharp_space_after_keywords_in_control_flow_statements = false
for(int i;i<x;i++) { ... }

csharp_space_between_method_declaration_parameter_list_parenthesescsharp_space_between_method_declaration_parameter_list_parentheses
このルールが true に設定されている場合は、メソッド宣言パラメーター リストの始めかっこの後と終わりかっこの前に空白文字を配置します。When this rule is set to true, place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list.
このルールが false に設定されている場合は、メソッド宣言パラメーター リストの始めかっこの後と終わりかっこの前に空白文字を配置しません。When this rule is set to false, do not place space characters after the opening parenthesis and before the closing parenthesis of a method declaration parameter list.

コード例:Code examples:

// csharp_space_between_method_declaration_parameter_list_parentheses = true
void Bark( int x ) { ... }

// csharp_space_between_method_declaration_parameter_list_parentheses = false
void Bark(int x) { ... }

csharp_space_between_method_call_parameter_list_parenthesescsharp_space_between_method_call_parameter_list_parentheses
このルールが true に設定されている場合は、メソッド呼び出しの始めかっこの後と終わりかっこの前に空白文字を配置します。When this rule is set to true, place a space character after the opening parenthesis and before the closing parenthesis of a method call.
このルールが false に設定されている場合は、メソッド呼び出しの始めかっこの後と終わりかっこの前に空白文字を配置しません。When this rule is set to false, do not place space characters after the opening parenthesis and before the closing parenthesis of a method call.

コード例:Code examples:

// csharp_space_between_method_call_parameter_list_parentheses = true
MyMethod( argument );

// csharp_space_between_method_call_parameter_list_parentheses = false
MyMethod(argument);

csharp_space_between_parenthesescsharp_space_between_parentheses
このルールでは truefalse の値は受け入れません。代わりに、以下の表の値を受け入れます。This rule does not accept a true or false value; instead it accepts a value from the following table:

Value 説明Description
control_flow_statementscontrol_flow_statements 制御フロー ステートメントのかっこの間にスペースを配置します。Place space between parentheses of control flow statements
expressions 式のかっこの間にスペースを配置します。Place space between parentheses of expressions
type_caststype_casts 型キャストのかっこの間にスペースを配置します。Place space between parentheses in type casts

コード例:Code examples:

// csharp_space_between_parentheses = control_flow_statements
for( int i;i<x;i++ ) { ... }

// csharp_space_between_parentheses = expressions
var z = ( x * y ) - ( ( y - x ) * 3);

// csharp_space_between_parentheses = type_casts
int y = ( int )x;

editorconfig ファイルの例:Example .editorconfig file:

# CSharp formatting settings:
[*.cs]
csharp_space_after_cast = true
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_between_method_declaration_parameter_list_parentheses = true
csharp_space_between_method_call_parameter_list_parentheses = true
csharp_space_between_parentheses = control_flow_statements, type_casts

折り返しオプションWrapping options

これらの書式ルールは、ステートメントとコード ブロックでの 1 行と別の行の使用に関するものです。These formatting rules concern the use of single lines versus separate lines for statements and code blocks.

次の表には、ルール名、適用可能な言語、Visual Studio の既定値、および最初のサポート対象バージョンを示します。The following table shows the rule names, applicable languages, default values, and first supported version of Visual Studio:

ルール名Rule Name 適用可能な言語Applicable Languages Visual Studio の既定値Visual Studio Default サポートされているバージョンSupported Version
csharp_preserve_single_line_statementscsharp_preserve_single_line_statements C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3
csharp_preserve_single_line_blockscsharp_preserve_single_line_blocks C#C# truetrue Visual Studio 2017 v.Visual Studio 2017 v. 15.315.3

csharp_preserve_single_line_statements csharp_preserve_single_line_statements
このルールが true に設定されている場合は、1 行に複数のステートメントとメンバー宣言を表示します。When this rule is set to true, leave statements and member declarations on the same line.
このルールが false に設定されている場合は、別の行にステートメントとメンバー宣言を表示します。When this rule is set to false, leave statements and member declarations on different lines.

コード例:Code examples:

//csharp_preserve_single_line_statements = true
int i = 0; string name = "John";

//csharp_preserve_single_line_statements = false
int i = 0; 
string name = "John";

csharp_preserve_single_line_blockscsharp_preserve_single_line_blocks
このルールが true に設定されている場合は、1 行にコード ブロックを表示します。When this rule is set to true, leave code block on single line.
このルールが false に設定されている場合は、別の行にコード ブロックを表示します。When this rule is set to false, leave code block on separate lines.

コード例:Code examples:

//csharp_preserve_single_line_blocks = true
public int Foo { get; set; }

//csharp_preserve_single_line_blocks = false
public int MyProperty
{ 
    get; set;
}

editorconfig ファイルの例:Example .editorconfig file:

# CSharp formatting settings:
[*.cs]
csharp_preserve_single_line_statements = true
csharp_preserve_single_line_blocks = true

名前付け規則Naming conventions

名前付け規則は、クラス、プロパティ、およびメソッドなどのコード要素の名前付けに関するものです。Naming conventions concern the naming of code elements such as classes, properties, and methods. たとえば、非同期メソッドは "Async" で終わる必要があるなどと指定できます。For example, you can specify that asynchronous methods must end in "Async". 名前付け規則は、固有度の高いものから低いものの順に並べる必要があります。Naming conventions should be ordered from most-specific to least-specific. 適用可能な最初に検出されたルールのみが適用されます。The first rule encountered that can be applied is the only rule that is applied.

namingRuleTitle で識別される、名前付け規則のルールごとに、ルールが適用されるシンボル、名前付けスタイル、および重要度を指定する必要があります。For each naming convention rule, identified by namingRuleTitle, you must specify the symbols it applies to, a naming style, and a severity:

dotnet_naming_rule.<namingRuleTitle>.symbols = <symbolTitle>
dotnet_naming_rule.<namingRuleTitle>.style = <styleTitle>
dotnet_naming_rule.<namingRuleTitle>.severity = none|suggestion|warning|error

シンボルSymbols

dotnet_naming_rule.<namingRuleTitle>.symbols = <symbolTitle> というプロパティを使用して、名前付けルールを適用するシンボルのグループを識別します。Identify a group of symbols to apply a naming rule to with this property: dotnet_naming_rule.<namingRuleTitle>.symbols = <symbolTitle>. 以下のプロパティを使用して、グループに含まれるアクセシビリティ レベル、修飾子、およびシンボルの種類を指定します。Specify which kind of symbols, which modifiers, and which accessibility levels are included in the group using the following properties:

プロパティProperty 使用できる値Possible Values
dotnet_naming_symbols.<symbolTitle>.applicable_kindsdotnet_naming_symbols.<symbolTitle>.applicable_kinds 、class、struct、interface、enum、property、method、field、event、namespace、delegate、type_parameter, class, struct, interface, enum, property, method, field, event, namespace, delegate, type_parameter
dotnet_naming_symbols.<symbolTitle>.applicable_accessibilitiesdotnet_naming_symbols.<symbolTitle>.applicable_accessibilities 、public、internal (C#)、friend (Visual Basic)、private、protected、protected_internal (C#)、protected_friend (Visual Basic), public, internal (C#), friend (Visual Basic), private, protected, protected_internal (C#), protected_friend (Visual Basic)
dotnet_naming_symbols.<symbolTitle>.required_modifiersdotnet_naming_symbols.<symbolTitle>.required_modifiers abstract (C#)、must_inherit (Visual Basic)、async、const、readonly、static (C#)、shared (Visual Basic)abstract (C#), must_inherit (Visual Basic), async, const, readonly, static (C#), shared (Visual Basic)

スタイルStyle

dotnet_naming_rule.<namingRuleTitle>.style = <styleTitle> というプロパティを使用して、シンボルのグループに適用する名前付けスタイルを識別します。Identify the naming style to apply to a group of symbols with this property: dotnet_naming_rule.<namingRuleTitle>.style = <styleTitle>.

次の 1 つ以上のプロパティを使用して、名前付けスタイルを指定します。Specify the naming style using one or more of the following properties:

プロパティProperty 使用できる値Possible Values
dotnet_naming_style.<styleTitle>.required_prefixdotnet_naming_style.<styleTitle>.required_prefix 識別子の先頭に配置する必要がある文字。Required characters that must appear at the beginning of the identifier.
dotnet_naming_style.<styleTitle>.required_suffixdotnet_naming_style.<styleTitle>.required_suffix 識別子の末尾に配置する必要がある文字。Required characters that must appear at the end of the identifier.
dotnet_naming_style.<styleTitle>.word_separatordotnet_naming_style.<styleTitle>.word_separator 識別子の単語の間に必要な文字。Required character between words in the identifier.
dotnet_naming_style.<styleTitle>.capitalizationdotnet_naming_style.<styleTitle>.capitalization pascal_case、camel_case、first_word_upper、all_upper、all_lowerpascal_case, camel_case, first_word_upper, all_upper, all_lower

注意

名前付けスタイルの一部として大文字化スタイルを指定する必要があります。それ以外の場合、名前付けスタイルは無視されます。You must specify a capitalization style as part of your naming style, otherwise your naming style will be ignored.

重要度Severity

dotnet_naming_rule.<namingRuleTitle>.severity というプロパティを使用して、名前付けルールの重要度レベルを識別します。Identify the severity level for a naming rule with this property: dotnet_naming_rule.<namingRuleTitle>.severity.

次の表は、重要度の値のオプションを示しています。The following table shows the severity value options:

重要度Severity 効果Effect
none または silentnone or silent このスタイルに準拠していないときは、ユーザーには何も表示されませんが、コード生成機能により、このスタイルで新しいコードが生成されます。When this style is not being followed, do not show anything to the user; however, code generation features generate new code in this style.
修正候補suggestion このスタイルに準拠していないとき、修正候補としてユーザーに表示されます (最初の 2 文字の下に点線が付きます)。When this style is not being followed, show it to the user as a suggestion (underlying dots on the first two characters). コンパイル時には効果はありません。It has no effect at compile time.
警告warning このスタイルに準拠していないとき、コンパイラの警告が表示されます。When this style is not being followed, show a compiler warning.
エラーerror このスタイルに準拠していないとき、コンパイラ エラーが表示されます。When this style is not being followed, show a compiler error.

名前付け規則を使用した .editorconfig ファイルの例Example .editorconfig file with naming conventions

# Dotnet Naming Conventions
[*.{cs,vb}] 
dotnet_naming_rule.async_methods_end_in_async.symbols  = any_async_methods
dotnet_naming_rule.async_methods_end_in_async.style    = end_in_async
dotnet_naming_rule.async_methods_end_in_async.severity = suggestion

dotnet_naming_symbols.any_async_methods.applicable_kinds           = method
dotnet_naming_symbols.any_async_methods.applicable_accessibilities = *
dotnet_naming_symbols.any_async_methods.required_modifiers         = async

dotnet_naming_style.end_in_async.required_suffix = Async
dotnet_naming_style.end_in_async.capitalization  = pascal_case

関連項目See also

クイック アクションQuick Actions
移植可能なカスタム エディター オプションを作成するCreate portable custom editor options
.NET コンパイラ プラットフォームの .editorconfig ファイル.NET Compiler Platform's .editorconfig file