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

Visual Studio 2017 EditorConfig ファイルを使用すれば、コードベースで一貫性のあるコード スタイルを定義および維持できます。In Visual Studio 2017, 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." 修飾子"This." と "Me."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..

次の表に、ルール名、適用可能なプログラミング言語、および既定値を示します。The following table shows the rule names, applicable programming languages, and default values:

規則名Rule name 適用可能な言語Applicable languages Visual Studio の既定値Visual Studio default value
dotnet_style_qualification_for_fielddotnet_style_qualification_for_field C# および Visual BasicC# and Visual Basic false:なしfalse:none
dotnet_style_qualification_for_propertydotnet_style_qualification_for_property C# および Visual BasicC# and Visual Basic false:なしfalse:none
dotnet_style_qualification_for_methoddotnet_style_qualification_for_method C# および Visual BasicC# and Visual Basic false:なしfalse:none
dotnet_style_qualification_for_eventdotnet_style_qualification_for_event C# および Visual BasicC# and Visual Basic false:なしfalse:none

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、適用可能なプログラミング言語、および既定値を示します。The following table shows the rule names, rules IDs, applicable programming languages, and default values:

規則名Rule name ルール IDRule ID 適用可能な言語Applicable languages Visual Studio の既定値Visual Studio default
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
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

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_accessdotnet_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

修飾子の基本設定Modifier preferences

このセクションのスタイル ルールは、アクセシビリティ修飾子を必要とする、必要な修飾子の並べ替え順序を指定するなど、修飾子の基本設定に関するものです。The style rules in this section concern modifier preferences, including requiring accessibility modifiers and specifying the desired modifier sort order.

次の表には、ルール名、ルール 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 Visual Studio 2017 バージョンVisual Studio 2017 version
dotnet_style_require_ accessibility_modifiersdotnet_style_require_ accessibility_modifiers IDE0040IDE0040 C# および Visual BasicC# and Visual Basic for_non_interface_members:nonefor_non_interface_members:none 15.515.5
csharp_preferred_modifier_ordercsharp_preferred_modifier_order IDE0036IDE0036 C#C# public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:nonepublic, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:none 15.515.5
visual_basic_preferred_modifier_ordervisual_basic_preferred_modifier_order IDE0036IDE0036 Visual BasicVisual Basic Partial, Default, Private, Protected, Public, Friend, NotOverridable, Overridable, MustOverride, Overloads, Overrides, MustInherit, NotInheritable, Static, Shared, Shadows, ReadOnly, WriteOnly, Dim, Const,WithEvents, Widening, Narrowing, Custom, Async:nonePartial, Default, Private, Protected, Public, Friend, NotOverridable, Overridable, MustOverride, Overloads, Overrides, MustInherit, NotInheritable, Static, Shared, Shadows, ReadOnly, WriteOnly, Dim, Const,WithEvents, Widening, Narrowing, Custom, Async:none 15.515.5

dotnet_style_require_accessibility_modifiersdotnet_style_require_accessibility_modifiers

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

[値]Value 説明Description
alwaysalways アクセシビリティ修飾子を指定します。Prefer accessibility modifiers to be specified
for_non_interface_membersfor_non_interface_members パブリック インターフェイス メンバーの場合を除き、アクセシビリティ修飾子を宣言します。Prefer accessibility modifiers to be declared except for public interface members. 現時点では、これは always とは変わらず、C# で既定のインターフェイス メソッドが追加される場合、将来的には文章校正として機能します。This will currently not differ from always and will act as future proofing for if C# adds default interface methods.
nevernever アクセシビリティ修飾子を指定しません。Do not prefer accessibility modifiers to be specified

コード例:Code examples:

// dotnet_style_require_accessibility_modifiers = always
// dotnet_style_require_accessibility_modifiers = for_non_interface_members
class MyClass
{
    private const string thisFieldIsConst= "constant";
}

// dotnet_style_require_accessibility_modifiers = never
class MyClass
{
    const string thisFieldIsConst= "constant";
}

csharp_preferred_modifier_ordercsharp_preferred_modifier_order

  • このルールが修飾子のリストに設定されている場合は、指定された順序を優先します。When this rule is set to a list of modifiers, prefer the specified ordering.
  • ファイルでこのルールが省略されている場合は、修飾子の順序を優先しません。When this rule is omitted from the file, do not prefer a modifier order.

コード例:Code examples:

// csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
class MyClass
{
    private static readonly int _daysInYear = 365;
}

visual_basic_preferred_modifier_ordervisual_basic_preferred_modifier_order

  • このルールが修飾子のリストに設定されている場合は、指定された順序を優先します。When this rule is set to a list of modifiers, prefer the specified ordering.
  • ファイルでこのルールが省略されている場合は、修飾子の順序を優先しません。When this rule is omitted from the file, do not prefer a modifier order.

コード例:Code examples:

' visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async
Public Class MyClass
    Private Shared ReadOnly daysInYear As Int = 365
End Class

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

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

# CSharp code style settings:
[*.cs]
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

# Visual Basic code style settings:
[*.vb]
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion

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

このセクションのスタイル ルールは式レベル基本設定に関するものです。これには、オブジェクト初期化子、コレクション初期化子、明示的または推論されたタプル名、推定された匿名型が含まれます。The style rules in this section concern expression-level preferences, including the use of object initializers, collection initializers, explicit or inferred tuple names, and inferred anonymous types.

次の表には、ルール名、ルール 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 Visual Studio 2017 バージョンVisual Studio 2017 version
dotnet_style_object_initializerdotnet_style_object_initializer IDE0017IDE0017 C# および Visual BasicC# and Visual Basic true:提案true:suggestion 最初のリリースFirst release
dotnet_style_collection_initializerdotnet_style_collection_initializer IDE0028IDE0028 C# および Visual BasicC# and Visual Basic true:提案true:suggestion 最初のリリースFirst release
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 最初のリリースFirst release
dotnet_style_prefer_inferred_tuple_namesdotnet_style_prefer_inferred_tuple_names IDE0037IDE0037 C# 7.1+ および Visual Basic 15+C# 7.1+ and Visual Basic 15+ true:提案true:suggestion 15.615.6
dotnet_style_prefer_inferred_anonymous_ type_member_namesdotnet_style_prefer_inferred_anonymous_ type_member_names IDE0037IDE0037 C# および Visual BasicC# and Visual Basic true:提案true:suggestion 15.615.6

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_prefer_inferred_tuple_namesdotnet_style_prefer_inferred_tuple_names

  • このルールが true に設定されている場合、推論されたタプル要素名が優先されます。When this rule is set to true, prefer inferred tuple element names.
  • このルールが false に設定されている場合、明示的なタプル要素名が優先されます。When this rule is set to false, prefer explicit tuple element names.

コード例:Code examples:

// dotnet_style_prefer_inferred_tuple_names = true
var tuple = (age, name);

// dotnet_style_prefer_inferred_tuple_names = false
var tuple = (age: age, name: name);

dotnet_style_prefer_inferred_anonymous_type_member_namesdotnet_style_prefer_inferred_anonymous_type_member_names

  • このルールが true に設定されている場合、推論された匿名型のメンバー名が優先されます。When this rule is set to true, prefer inferred anonymous type member names.
  • このルールが false に設定されている場合、明示的な匿名型のメンバー名が優先されます。When this rule is set to false, prefer explicit anonymous type member names.

コード例:Code examples:

// dotnet_style_prefer_inferred_anonymous_type_member_names = true
var anon = new { age, name };

// dotnet_style_prefer_inferred_anonymous_type_member_names = false
var anon = new { age = age, name = name };

これらのルールは、次のように .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_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion

"Null" 検査設定Null-checking preferences

このセクションのスタイル ルールは、null 検査設定が関係します。The style rules in this section concern null-checking preferences.

次の表には、ルール名、ルール 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 Visual Studio 2017 バージョンVisual Studio 2017 version
dotnet_style_coalesce_expressiondotnet_style_coalesce_expression IDE0029IDE0029 C# および Visual BasicC# and Visual Basic true:提案true:suggestion 最初のリリースFirst release
dotnet_style_null_propagationdotnet_style_null_propagation IDE0031IDE0031 C# 6.0+ および Visual Basic 14+C# 6.0+ and Visual Basic 14+ true:提案true:suggestion 最初のリリースFirst release

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

次の表に、ルール名、適用可能なプログラミング言語、および既定値を示します。The following table shows the rule names, applicable programming languages, and default values:

規則名Rule name 適用可能な言語Applicable languages Visual Studio の既定値Visual Studio default
csharp_style_var_for_built_in_typescsharp_style_var_for_built_in_types C#C# true:なしtrue:none
csharp_style_var_when_type_is_apparentcsharp_style_var_when_type_is_apparent C#C# true:なしtrue:none
csharp_style_var_elsewherecsharp_style_var_elsewhere C#C# true:なしtrue:none

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 Visual Studio 2017 バージョンVisual Studio 2017 version
csharp_style_expression_bodied_methodscsharp_style_expression_bodied_methods IDE0022IDE0022 C# 6.0+C# 6.0+ false:なしfalse:none 15.315.3
csharp_style_expression_bodied_constructorscsharp_style_expression_bodied_constructors IDE0021IDE0021 C# 7.0+C# 7.0+ false:なしfalse:none 15.315.3
csharp_style_expression_bodied_operatorscsharp_style_expression_bodied_operators IDE0023 と IDE0024IDE0023 and IDE0024 C# 7.0+C# 7.0+ false:なしfalse:none 15.315.3
csharp_style_expression_bodied_propertiescsharp_style_expression_bodied_properties IDE0025IDE0025 C# 7.0+C# 7.0+ true:なしtrue:none 15.315.3
csharp_style_expression_bodied_indexerscsharp_style_expression_bodied_indexers IDE0026IDE0026 C# 7.0+C# 7.0+ true:なしtrue:none 15.315.3
csharp_style_expression_bodied_accessorscsharp_style_expression_bodied_accessors IDE0027IDE0027 C# 7.0+C# 7.0+ true:なしtrue:none 15.315.3

csharp_style_expression_bodied_methodscsharp_style_expression_bodied_methods

このルールでは、以下の表の値を受け入れます。This rule accepts values from the following table:

[値]Value 説明Description
truetrue メソッドに式形式メンバーを使用します。Prefer expression-bodied members for methods
when_on_single_linewhen_on_single_line 単一行になる場合は、メソッドに式形式メンバーを使用します。Prefer expression-bodied members for methods when they will be a single line
Falsefalse メソッドにブロック本体を使用します。Prefer block bodies 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

このルールでは、以下の表の値を受け入れます。This rule accepts values from the following table:

[値]Value 説明Description
truetrue コンストラクターに式形式メンバーを使用します。Prefer expression-bodied members for constructors
when_on_single_linewhen_on_single_line 単一行になる場合は、コンストラクターに式形式メンバーを使用します。Prefer expression-bodied members for constructors when they will be a single line
Falsefalse コンストラクターにブロック本体を使用します。Prefer block bodies 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

このルールでは、以下の表の値を受け入れます。This rule accepts values from the following table:

[値]Value 説明Description
truetrue 演算子に式形式メンバーを使用します。Prefer expression-bodied members for operators
when_on_single_linewhen_on_single_line 単一行になる場合は、演算子に式形式メンバーを使用します。Prefer expression-bodied members for operators when they will be a single line
Falsefalse 演算子にブロック本体を使用します。Prefer block bodies 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

このルールでは、以下の表の値を受け入れます。This rule accepts values from the following table:

[値]Value 説明Description
truetrue プロパティに式形式メンバーを使用します。Prefer expression-bodied members for properties
when_on_single_linewhen_on_single_line 単一行になる場合は、プロパティに式形式メンバーを使用します。Prefer expression-bodied members for properties when they will be a single line
Falsefalse プロパティにブロック本体を使用します。Prefer block bodies 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

このルールでは、以下の表の値を受け入れます。This rule accepts values from the following table:

[値]Value 説明Description
truetrue インデクサーに式形式メンバーを使用します。Prefer expression-bodied members for indexers
when_on_single_linewhen_on_single_line 単一行になる場合は、インデクサーに式形式メンバーを使用します。Prefer expression-bodied members for indexers when they will be a single line
Falsefalse インデクサーにブロック本体を使用します。Prefer block bodies 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

このルールでは、以下の表の値を受け入れます。This rule accepts values from the following table:

[値]Value 説明Description
truetrue アクセサーに式形式メンバーを使用します。Prefer expression-bodied members for accessors
when_on_single_linewhen_on_single_line 単一行になる場合は、アクセサーに式形式メンバーを使用します。Prefer expression-bodied members for accessors when they will be a single line
Falsefalse アクセサーにブロック本体を使用します。Prefer block bodies 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:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
csharp_style_expression_bodied_accessors = true:suggestion

パターン マッチングPattern matching

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

次の表に、ルール名、ルール ID、適用可能な言語バージョン、および既定値を示します。The following table shows the rule names, rule IDs, applicable language versions, and default values:

規則名Rule name ルール IDRule ID 適用可能な言語Applicable languages Visual Studio の既定値Visual Studio default
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
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

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、適用可能な言語バージョン、および既定値を示します。The following table shows the rule name, rule ID, applicable language versions, and default values:

規則名Rule name ルール IDRule ID 適用可能な言語Applicable languages Visual Studio の既定値Visual Studio default
csharp_style_inlined_variable_declarationcsharp_style_inlined_variable_declaration IDE0018IDE0018 C# 7.0+C# 7.0+ true:提案true:suggestion

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 = false
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

このセクションのスタイル ルールは、既定の式、分解された変数、匿名関数よりローカル関数を使用するなど、式レベル基本設定に関するものです。The style rules in this section concern expression-level preferences, including the use of default expressions, deconstructed variables, and local functions over anonymous functions.

次の表には、ルール名、ルール 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 Visual Studio 2017 バージョンVisual Studio 2017 version
csharp_prefer_simple_default_expressioncsharp_prefer_simple_default_expression IDE0034IDE0034 C# 7.1+C# 7.1+ true:提案true:suggestion 15.315.3
csharp_style_deconstructed_variable_declarationcsharp_style_deconstructed_variable_declaration IDE0042IDE0042 C# 7.0+C# 7.0+ true:提案true:suggestion 15.515.5
csharp_style_pattern_local_over_anonymous_functioncsharp_style_pattern_local_over_anonymous_function IDE0039IDE0039 C# 7.0+C# 7.0+ true:提案true:suggestion 15.515.5

csharp_prefer_simple_default_expressioncsharp_prefer_simple_default_expression

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

csharp_style_deconstructed_variable_declarationcsharp_style_deconstructed_variable_declaration

  • このルールが true に設定されている場合は、分解された変数宣言を優先します。When this rule is set to true, prefer deconstructed variable declaration.
  • このルールが false に設定されている場合、変数宣言では分解を優先しません。When this rule is set to false, do not prefer deconstruction in variable declarations.

コード例:Code examples:

// csharp_style_deconstructed_variable_declaration = true
var (name, age) = GetPersonTuple();
Console.WriteLine($"{name} {age}");

(int x, int y) = GetPointTuple();
Console.WriteLine($"{x} {y}");

// csharp_style_deconstructed_variable_declaration = false
var person = GetPersonTuple();
Console.WriteLine($"{person.name} {person.age}");

(int x, int y) point = GetPointTuple();
Console.WriteLine($"{point.x} {point.y}");

csharp_style_pattern_local_over_anonymous_functioncsharp_style_pattern_local_over_anonymous_function

  • このルールが true に設定されている場合は、匿名関数よりローカル関数を優先します。When this rule is set to true, prefer local functions over anonymous functions.
  • このルールが false に設定されている場合は、ローカル関数より匿名関数を優先します。When this rule is set to false, prefer anonymous functions over local functions.

コード例:Code examples:

// csharp_style_pattern_local_over_anonymous_function = true
int fibonacci(int n)
{
    return n <= 1 ? 1 : fibonacci(n-1) + fibonacci(n-2);
}

// csharp_style_pattern_local_over_anonymous_function = false
Func<int, int> fibonacci = null;
fibonacci = (int n) =>
{
    return n <= 1 ? 1 : fibonacci(n - 1) + fibonacci(n - 2);
};

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

# CSharp code style settings:
[*.cs]
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_pattern_local_over_anonymous_function = 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、適用可能な言語バージョン、および既定値を示します。The following table shows the rule names, rule IDs, applicable language versions, and default values:

規則名Rule name ルール IDRule ID 適用可能な言語Applicable languages Visual Studio の既定値Visual Studio default
csharp_style_throw_expressioncsharp_style_throw_expression IDE0016IDE0016 C# 7.0+C# 7.0+ true:提案true:suggestion
csharp_style_conditional_delegate_callcsharp_style_conditional_delegate_call IDE0041IDE0041 C# 6.0+C# 6.0+ true:提案true:suggestion

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_callcsharp_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:suggestion
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 Visual Studio 2017 バージョンVisual Studio 2017 version
csharp_prefer_bracescsharp_prefer_braces IDE0011IDE0011 C#C# true:なしtrue:none 15.315.3

csharp_prefer_bracescsharp_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 Visual Studio 2017 バージョンVisual Studio 2017 version
dotnet_sort_system_directives_firstdotnet_sort_system_directives_first C# および Visual BasicC# and Visual Basic truetrue 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 Visual Studio 2017 バージョンVisual Studio 2017 version
csharp_new_line_before_open_bracecsharp_new_line_before_open_brace C#C# すべてall 15.315.3
csharp_new_line_before_elsecsharp_new_line_before_else C#C# truetrue 15.315.3
csharp_new_line_before_catchcsharp_new_line_before_catch C#C# truetrue 15.315.3
csharp_new_line_before_finallycsharp_new_line_before_finally C#C# truetrue 15.315.3
csharp_new_line_before_members_in_object_initializerscsharp_new_line_before_members_in_object_initializers C#C# truetrue 15.315.3
csharp_new_line_before_members_in_anonymous_typescsharp_new_line_before_members_in_anonymous_types C#C# truetrue 15.315.3
csharp_new_line_between_query_expression_clausescsharp_new_line_between_query_expression_clauses C#C# truetrue 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_catchcsharp_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_finallycsharp_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_initializerscsharp_new_line_before_members_in_object_initializers

  • このルールが true に設定されている場合は、オブジェクト初期化子のメンバーを別の行に配置する必要があります。When this rule is set to true, require members of object intiializers 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_typescsharp_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_clausescsharp_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 Visual Studio 2017 バージョンVisual Studio 2017 version
csharp_indent_case_contentscsharp_indent_case_contents C#C# truetrue 15.315.3
csharp_indent_switch_labelscsharp_indent_switch_labels C#C# truetrue 15.315.3
csharp_indent_labelscsharp_indent_labels C#C# no_changeno_change 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 Visual Studio 2017 バージョンVisual Studio 2017 version
csharp_space_after_castcsharp_space_after_cast C#C# Falsefalse 15.315.3
csharp_space_after_keywords_in_control_flow_statementscsharp_space_after_keywords_in_control_flow_statements C#C# truetrue 15.315.3
csharp_space_between_method_declaration_parameter_ list_parenthesescsharp_space_between_method_declaration_parameter_ list_parentheses C#C# Falsefalse 15.315.3
csharp_space_between_method_call_parameter_list_parenthesescsharp_space_between_method_call_parameter_list_parentheses C#C# Falsefalse 15.315.3
csharp_space_between_parenthesescsharp_space_between_parentheses C#C# Falsefalse 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

このルールでは、以下の表の 1 つ以上の値を受け入れます。This rule accepts one or more values 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

このルールを省略するか、control_flow_statementsexpressions、または type_casts 以外の値を使用する場合、設定は適用されません。If you omit this rule, or use a value other than control_flow_statements, expressions, or type_casts, the setting is not applied.

コード例:Code examples:

// csharp_space_between_parentheses = control_flow_statements
for ( int i = 0; i < 10; 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 Visual Studio 2017 バージョンVisual Studio 2017 version
csharp_preserve_single_line_statementscsharp_preserve_single_line_statements C#C# truetrue 15.315.3
csharp_preserve_single_line_blockscsharp_preserve_single_line_blocks C#C# truetrue 15.315.3

csharp_preserve_single_line_statementscsharp_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

関連項目See also