言語規則Language conventions

Visual Studio 用の EditorConfig の言語規則は、2 つのカテゴリに分類されます。Visual Basic と C# に適用されるものと、C# 固有のものです。Language conventions for EditorConfig in Visual Studio fall into two categories: those that apply to Visual Basic and C#, and those that are C# specific. 言語規則は、修飾子やかっこなど、プログラミング言語のさまざまな側面の使用方法に影響します。Language conventions affect how various aspects of a programming language are used, for example, modifiers and parentheses.

Tip

  • 優先するプログラミング言語のコード例を表示するには、ブラウザー ウィンドウの右上隅にある言語ピッカーを使ってそれを選択します。To see the code examples in your preferred programming language, choose it using the language picker at the top-right corner of the browser window.

    コード言語ピッカー コントロール

  • この記事の内容」のリンクを使って、ページのさまざまなセクションに移動してください。Use the In this article links to jump to different sections of the page.

規則形式Rule format

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

option_name = value:severity

各言語の規則では、そのスタイルを優先する場合や状況を指定します。For each language convention, you specify a value that defines if or when to prefer the style. 多くのルールでは、true (このスタイルを優先する) または false (このスタイルを優先しない) の値が受け付けられます。Many rules accept a value of true (prefer this style) or false (do not prefer this style). それ以外では、when_on_single_linenever などの値が受け付けられます。Other rules accept values such as when_on_single_line or never. ルールの 2 番目の部分では、重要度を指定します。The second part of the rule specifies the severity.

Note

言語変換はアナライザーによって強制されるため、アナライザーの既定の構成構文を利用し、その重要度を設定することもできます。Because language conventions are enforced by analyzers, you can also set their severity by using the default configuration syntax for analyzers. この構文では dotnet_diagnostic.<rule ID>.severity = <severity> 形式が使用されます。たとえば、dotnet_diagnostic.IDE0040.severity = silent のようになります。The syntax takes the form dotnet_diagnostic.<rule ID>.severity = <severity>, for example, dotnet_diagnostic.IDE0040.severity = silent. 詳細については、「EditorConfig ファイルで規則の重要度を設定する」を参照してください。For more information, see Set rule severity in an EditorConfig file.

セキュリティ レベルSeverity levels

言語規則の重要度では、そのスタイルを強制するレベルを指定します。A language convention severity specifies the level at which to enforce that style. 次の表に、指定できる重要度の値とその効果をリストします。The following table lists the possible severity values and their effects:

重要度Severity 効果Effect
error このスタイル ルールに違反した場合、コンパイラ エラーが表示されます。When this style rule is violated, show a compiler error.
warning このスタイル ルールに違反した場合、コンパイラの警告が表示されます。When this style rule is violated, show a compiler warning.
suggestion このスタイル ルールに違反した場合、修正候補としてユーザーに表示されます。When this style rule is violated, show it to the user as a suggestion. 修正候補は、最初の 2 文字の下に 3 つの灰色のドットとして表示されます。Suggestions appear as three gray dots under the first two characters.
silent このルールに違反した場合、ユーザーには何も表示されません。Do not show anything to the user when this rule is violated. しかし、コード生成機能により、このスタイルでコードが生成されます。Code generation features generate code in this style, however. 重大度が silent のルールはクリーンアップに関するものであり、また [クイック アクションとリファクタリング] メニューに表示されます。Rules with silent severity participate in cleanup and appear in the Quick Actions and Refactorings menu.
none このルールに違反した場合、ユーザーには何も表示されません。Do not show anything to the user when this rule is violated. しかし、コード生成機能により、このスタイルでコードが生成されます。Code generation features generate code in this style, however. 重大度が none のルールが、 [クイック アクションとリファクタリング] メニューに表示されることはありません。Rules with none severity never appear in the Quick Actions and Refactorings menu. ほとんどの場合、これは "無効" または "無視" と見なされます。In most cases, this is considered "disabled" or "ignored".

コード スタイルを自動的に構成するAutomatically configure code styles

Visual Studio 2019 バージョン 16.3 以降、スタイル違反後、[クイック アクション] という電球メニューからコード スタイルの規則を構成できます。Starting in Visual Studio 2019 version 16.3, you can configure code style rules from the Quick Actions light bulb menu after a style violation occurs.

コード スタイルの規則を変更するには:To change the code style convention:

  1. エディターで波線の上にカーソルを置き、表示された電球メニューを開きます。Hover over the squiggle in the editor, and then open the light bulb menu that appears. [Configure or Suppress issues](問題の構成または抑制) を選択し、 [Configure <rule ID> code style](<ルール ID> コード スタイルの構成) を選択します。Choose Configure or Suppress issues > Configure <rule ID> code style.

    Visual Studio の電球メニューからコード スタイルを構成する

  2. そこから、いずれかのコード スタイル オプションを選択します。From there, choose one of the code style options.

    コード スタイルの設定を構成する

    Visual Studio では、次のボックスに示されているように、EditorConfig ファイルで構成設定が追加または修正されます。Visual Studio adds or modifies the configuration setting in the EditorConfig file, as shown in the preview box.

コード スタイル違反の重要度を変更するには、同じ手順を進めますが、 [Configure <rule ID> code style](<ルール ID> コード スタイルの構成) の代わりに [Configure <rule ID> severity](<ルール ID> 重要度の構成) を選択します。To change the severity of the code style violation, follow the same steps, but choose Configure <rule ID> severity instead of Configure <rule ID> code style. 詳細については、「規則の重要度を自動的に構成する」を参照してください。For more information, see Automatically configure rule severity.

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

このセクションのスタイル ルールは、C# および Visual Basic の両方に適用されます。The style rules in this section are applicable to both C# and Visual Basic.

  • "This."と "Me." 修飾子"This." and "Me." qualifiers
    • dotnet_style_qualification_for_fielddotnet_style_qualification_for_field
    • dotnet_style_qualification_for_propertydotnet_style_qualification_for_property
    • dotnet_style_qualification_for_methoddotnet_style_qualification_for_method
    • dotnet_style_qualification_for_eventdotnet_style_qualification_for_event
  • 型参照のためのフレームワーク型名の代わりの言語キーワードLanguage keywords instead of framework type names for type references
    • dotnet_style_predefined_type_for_locals_parameters_membersdotnet_style_predefined_type_for_locals_parameters_members
    • dotnet_style_predefined_type_for_member_accessdotnet_style_predefined_type_for_member_access
  • 修飾子の基本設定Modifier preferences
    • dotnet_style_require_accessibility_modifiersdotnet_style_require_accessibility_modifiers
    • csharp_preferred_modifier_ordercsharp_preferred_modifier_order
    • visual_basic_preferred_modifier_ordervisual_basic_preferred_modifier_order
    • dotnet_style_readonly_fielddotnet_style_readonly_field
  • かっこの基本設定Parentheses preferences
    • dotnet_style_parentheses_in_arithmetic_binary_operatorsdotnet_style_parentheses_in_arithmetic_binary_operators
    • dotnet_style_parentheses_in_other_binary_operatorsdotnet_style_parentheses_in_other_binary_operators
    • dotnet_style_parentheses_in_other_operatorsdotnet_style_parentheses_in_other_operators
    • dotnet_style_parentheses_in_relational_binary_operatorsdotnet_style_parentheses_in_relational_binary_operators
  • 式レベル基本設定Expression-level preferences
    • dotnet_style_object_initializerdotnet_style_object_initializer
    • dotnet_style_collection_initializerdotnet_style_collection_initializer
    • dotnet_style_explicit_tuple_namesdotnet_style_explicit_tuple_names
    • dotnet_style_prefer_inferred_tuple_namesdotnet_style_prefer_inferred_tuple_names
    • dotnet_style_prefer_inferred_anonymous_type_member_namesdotnet_style_prefer_inferred_anonymous_type_member_names
    • dotnet_style_prefer_auto_propertiesdotnet_style_prefer_auto_properties
    • dotnet_style_prefer_is_null_check_over_reference_equality_methoddotnet_style_prefer_is_null_check_over_reference_equality_method
    • dotnet_style_prefer_conditional_expression_over_assignmentdotnet_style_prefer_conditional_expression_over_assignment
    • dotnet_style_prefer_conditional_expression_over_returndotnet_style_prefer_conditional_expression_over_return
    • dotnet_style_prefer_compound_assignmentdotnet_style_prefer_compound_assignment
  • "null" チェック設定"Null" checking preferences
    • dotnet_style_coalesce_expressiondotnet_style_coalesce_expression
    • dotnet_style_null_propagationdotnet_style_null_propagation

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

このスタイル ルールは、フィールド、プロパティ、メソッド、またはイベントに適用できます。This style rule 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..

これらのルールは、次のように .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

dotnet_style_qualification_for_fielddotnet_style_qualification_for_field

ルール名Rule name dotnet_style_qualification_for_fielddotnet_style_qualification_for_field
ルール IDRule ID IDE0003、IDE0009IDE0003 and IDE0009
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - C# では this.、Visual Basic では Me. をフィールドの前に付けますtrue - Prefer fields to be prefaced with this. in C# or Me. in Visual Basic

false - フィールドの前に this. または Me. を付け "ません"false - Prefer fields not to be prefaced with this. or Me.
Visual Studio の既定値Visual Studio default false:silent

コード例: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

ルール名Rule name dotnet_style_qualification_for_propertydotnet_style_qualification_for_property
ルール IDRule ID IDE0003、IDE0009IDE0003 and IDE0009
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - C# では this.、Visual Basic では Me. をプロパティの前に付けますtrue - Prefer properties to be prefaced with this. in C# or Me. in Visual Basic

false - プロパティの前に this. または Me. を付け "ません"false - Prefer properties not to be prefaced with this. or Me.
Visual Studio の既定値Visual Studio default false:silent

コード例: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

ルール名Rule name dotnet_style_qualification_for_methoddotnet_style_qualification_for_method
ルール IDRule ID IDE0003、IDE0009IDE0003 and IDE0009
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - C# では this.、Visual Basic では Me. をメソッドの前に付けますtrue - Prefer methods to be prefaced with this. in C# or Me. in Visual Basic.

false - メソッドの前に this. または Me. を付け "ません"false - Prefer methods not to be prefaced with this. or Me..
Visual Studio の既定値Visual Studio default false:silent

コード例: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

ルール名Rule name dotnet_style_qualification_for_eventdotnet_style_qualification_for_event
ルール IDRule ID IDE0003、IDE0009IDE0003 and IDE0009
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - C# では this.、Visual Basic では Me. をイベントの前に付けますtrue - Prefer events to be prefaced with this. in C# or Me. in Visual Basic.

false - イベントの前に this. または Me. を付け "ません"false - Prefer events not to be prefaced with this. or Me..
Visual Studio の既定値Visual Studio default false:silent

コード例: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

型参照のためのフレームワーク型名の代わりの言語キーワード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 (for example, int or Integer) instead of the type name (for example, 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.

これらのルールは、次のように .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

dotnet_style_predefined_type_for_locals_parameters_membersdotnet_style_predefined_type_for_locals_parameters_members

ルール名Rule name dotnet_style_predefined_type_for_locals_parameters_membersdotnet_style_predefined_type_for_locals_parameters_members
ルール IDRule ID IDE0012 と IDE0014IDE0012 and IDE0014
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - 型を表すキーワードを持つ型に対して、型名の代わりに、ローカル変数、メソッド パラメーター、およびクラス メンバーの言語キーワードを使用します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 - 言語キーワードの代わりに、ローカル変数、メソッド パラメーター、およびクラス メンバーの型名を使用しますfalse - Prefer the type name for local variables, method parameters, and class members, instead of the language keyword
Visual Studio の既定値Visual Studio default true:silent

コード例: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

ルール名Rule name dotnet_style_predefined_type_for_member_accessdotnet_style_predefined_type_for_member_access
ルール IDRule ID IDE0013 と IDE0015IDE0013 and IDE0015
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - 型を表すキーワードを持つ型に対して、型名の代わりに、メンバー アクセス式の言語キーワードを使用しますtrue - Prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them

false - 言語キーワードの代わりに、メンバー アクセス式の型名を使用しますfalse - Prefer the type name for member access expressions, instead of the language keyword
Visual Studio の既定値Visual Studio default true:silent

コード例: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

修飾子の基本設定Modifier preferences

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

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

# 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

dotnet_style_require_accessibility_modifiersdotnet_style_require_accessibility_modifiers

ルール名Rule name dotnet_style_require_accessibility_modifiersdotnet_style_require_accessibility_modifiers
ルール IDRule ID IDE0040IDE0040
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values always - アクセシビリティ修飾子を指定します。always - Prefer accessibility modifiers to be specified.

for_non_interface_members - パブリック インターフェイス メンバーの場合を除き、アクセシビリティ修飾子を宣言します。for_non_interface_members - Prefer accessibility modifiers to be declared except for public interface members. (これは、always と同じであり、C# が既定のインターフェイス メソッドを追加する場合の将来の対策のために追加されています)。(This is the same as always and has been added for future-proofing if C# adds default interface methods.)

never - アクセシビリティ修飾子を指定しません。never - Do not prefer accessibility modifiers to be specified.

omit_if_default - 既定の修飾子である場合を除き、アクセシビリティ修飾子を指定することを優先します。omit_if_default - Prefer accessibility modifiers to be specified except if they are the default modifier.
Visual Studio の既定値Visual Studio default for_non_interface_members:silent
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.5Visual Studio 2017 version 15.5

コード例: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

ルール名Rule name csharp_preferred_modifier_ordercsharp_preferred_modifier_order
ルール IDRule ID IDE0036IDE0036
該当言語Applicable languages C#C#
Values publicprivateprotected などの 1 つ以上の C# 修飾子One or more C# modifiers, such as public, private, and protected
Visual Studio の既定値Visual Studio default public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:silent
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.5Visual Studio 2017 version 15.5
  • このルールが修飾子のリストに設定されている場合は、指定された順序を優先します。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

ルール名Rule name visual_basic_preferred_modifier_ordervisual_basic_preferred_modifier_order
ルール IDRule ID IDE0036IDE0036
該当言語Applicable languages Visual BasicVisual Basic
Values PartialPrivatePublic などの 1 つ以上の Visual Basic 修飾子One or more Visual Basic modifiers, such as Partial, Private, and Public
Visual Studio の既定値Visual Studio default 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:silent
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.5Visual Studio 2017 version 15.5
  • このルールが修飾子のリストに設定されている場合は、指定された順序を優先します。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

dotnet_style_readonly_fielddotnet_style_readonly_field

ルール名Rule name dotnet_style_readonly_fielddotnet_style_readonly_field
ルール IDRule ID IDE0044IDE0044
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - フィールドがインラインまたはコンストラクターの内部でのみ割り当てられている場合は、フィールドを readonly (C#) または ReadOnly (Visual Basic) でマークする必要がありますtrue - Prefer that fields should be marked with readonly (C#) or ReadOnly (Visual Basic) if they are only ever assigned inline, or inside of a constructor

false - フィールドを readonly (C#) または ReadOnly (Visual Basic) でマークする必要があるかどうかに関して特に規定がないことを指定しますfalse - Specify no preference over whether fields should be marked with readonly (C#) or ReadOnly (Visual Basic)
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.7Visual Studio 2017 version 15.7

コード例:Code examples:

// dotnet_style_readonly_field = true
class MyClass
{
    private readonly int _daysInYear = 365;
}
' dotnet_style_readonly_field = true
Public Class MyClass
    Private ReadOnly daysInYear As Int = 365
End Class

かっこの基本設定Parentheses preferences

このセクションのスタイル ルールは、算術演算子、関係演算子、およびその他の 2 項演算子でのかっこの使用を含む、かっこの基本設定に関するものです。The style rules in this section concern parentheses preferences, including the use of parentheses for arithmetic, relational, and other binary operators.

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

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent

dotnet_style_parentheses_in_arithmetic_binary_operatorsdotnet_style_parentheses_in_arithmetic_binary_operators

ルール名Rule name dotnet_style_parentheses_in_arithmetic_binary_operatorsdotnet_style_parentheses_in_arithmetic_binary_operators
ルール IDRule ID IDE0047IDE0047
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values always_for_clarity - 算術演算子 (*/%+-<<>>&^|) の基本設定を明確にするためにかっこを使用しますalways_for_clarity - Prefer parentheses to clarify arithmetic operator (*, /, %, +, -, <<, >>, &, ^, |) precedence

never_if_unnecessary - 算術演算子 (*/%+-<<>>&^|) の基本設定が明確な場合はかっこを使用しませんnever_if_unnecessary - Prefer to not have parentheses when arithmetic operator (*, /, %, +, -, <<, >>, &, ^, |) precedence is obvious
Visual Studio の既定値Visual Studio default always_for_clarity:silent
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.8Visual Studio 2017 version 15.8

コード例:Code examples:

// dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
var v = a + (b * c);

// dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary
var v = a + b * c;
' dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
Dim v = a + (b * c)

' dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary
Dim v = a + b * c

dotnet_style_parentheses_in_relational_binary_operatorsdotnet_style_parentheses_in_relational_binary_operators

ルール名Rule name dotnet_style_parentheses_in_relational_binary_operatorsdotnet_style_parentheses_in_relational_binary_operators
ルール IDRule ID IDE0047IDE0047
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values always_for_clarity - 関係演算子 (><<=>=isas==!=) の基本設定を明確にするためにかっこを使用しますalways_for_clarity - Prefer parentheses to clarify relational operator (>, <, <=, >=, is, as, ==, !=) precedence

never_if_unnecessary - 関係演算子 (><<=>=isas==!=) の基本設定が明確な場合はかっこを使用しませんnever_if_unnecessary - Prefer to not have parentheses when relational operator (>, <, <=, >=, is, as, ==, !=) precedence is obvious
Visual Studio の既定値Visual Studio default always_for_clarity:silent
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.8Visual Studio 2017 version 15.8

コード例:Code examples:

// dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
var v = (a < b) == (c > d);

// dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary
var v = a < b == c > d;
' dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
Dim v = (a < b) = (c > d)

' dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary
Dim v = a < b = c > d

dotnet_style_parentheses_in_other_binary_operatorsdotnet_style_parentheses_in_other_binary_operators

ルール名Rule name dotnet_style_parentheses_in_other_binary_operatorsdotnet_style_parentheses_in_other_binary_operators
ルール IDRule ID IDE0047IDE0047
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values always_for_clarity - 2 項演算子 (&&||??) の基本設定を明確にするためにかっこを使用しますalways_for_clarity - Prefer parentheses to clarify other binary operator (&&, ||, ??) precedence

never_if_unnecessary - 2 項演算子 (&&||??) の基本設定が明確な場合はかっこを使用しませんnever_if_unnecessary - Prefer to not have parentheses when other binary operator (&&, ||, ??) precedence is obvious
Visual Studio の既定値Visual Studio default always_for_clarity:silent
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.8Visual Studio 2017 version 15.8

コード例:Code examples:

// dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
var v = a || (b && c);

// dotnet_style_parentheses_in_other_binary_operators = never_if_unnecessary
var v = a || b && c;
' dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
Dim v = a OrElse (b AndAlso c)

' dotnet_style_parentheses_in_other_binary_operators = never_if_unnecessary
Dim v = a OrElse b AndAlso c

dotnet_style_parentheses_in_other_operatorsdotnet_style_parentheses_in_other_operators

ルール名Rule name dotnet_style_parentheses_in_other_operatorsdotnet_style_parentheses_in_other_operators
ルール IDRule ID IDE0047IDE0047
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values always_for_clarity - 演算子の優先順位を明確にするためにかっこを使用しますalways_for_clarity - Prefer parentheses to clarify operator precedence

never_if_unnecessary - 演算子の優先順位が明確な場合はかっこを使用しませんnever_if_unnecessary - Prefer to not have parentheses when operator precedence is obvious
Visual Studio の既定値Visual Studio default never_if_unnecessary:silent
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.8Visual Studio 2017 version 15.8

コード例:Code examples:

// dotnet_style_parentheses_in_other_operators = always_for_clarity
var v = (a.b).Length;

// dotnet_style_parentheses_in_other_operators = never_if_unnecessary
var v = a.b.Length;
' dotnet_style_parentheses_in_other_operators = always_for_clarity
Dim v = (a.b).Length

' dotnet_style_parentheses_in_other_operators = never_if_unnecessary
Dim v = a.b.Length

式レベルの基本設定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.

これらのルールは、次のように .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
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion

dotnet_style_object_initializerdotnet_style_object_initializer

ルール名Rule name dotnet_style_object_initializerdotnet_style_object_initializer
ルール IDRule ID IDE0017IDE0017
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - 可能であれば、オブジェクト初期化子を使用し、オブジェクトを初期化しますtrue - Prefer objects to be initialized using object initializers when possible

false - オブジェクト初期化子でオブジェクトを初期化 "しません"false - Prefer objects to not be initialized using object initializers
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

ルール名Rule name dotnet_style_collection_initializerdotnet_style_collection_initializer
ルール IDRule ID IDE0028IDE0028
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - 可能であれば、コレクション初期化子を使用してコレクションを初期化しますtrue - Prefer collections to be initialized using collection initializers when possible

false - コレクション初期化子でコレクションを初期化 "しません"false - Prefer collections to not be initialized using collection initializers
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

ルール名Rule name dotnet_style_explicit_tuple_namesdotnet_style_explicit_tuple_names
ルール IDRule ID IDE0033IDE0033
該当言語Applicable languages C# 7.0+ および Visual Basic 15+C# 7.0+ and Visual Basic 15+
Values true - ItemX プロパティではなくタプル名を使用しますtrue - Prefer tuple names to ItemX properties

false - タプル名ではなく ItemX プロパティを使用しますfalse - Prefer ItemX properties to tuple names
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

ルール名Rule name dotnet_style_prefer_inferred_tuple_namesdotnet_style_prefer_inferred_tuple_names
ルール IDRule ID IDE0037IDE0037
該当言語Applicable languages C# 7.1+ および Visual Basic 15+C# 7.1+ and Visual Basic 15+
Values true - 推論されたタプル要素名が優先されますtrue - Prefer inferred tuple element names

false - 明示的なタプル要素名が優先されますfalse - Prefer explicit tuple element names
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.6Visual Studio 2017 version 15.6

コード例: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_tuple_names = true
Dim tuple = (name, age)

' dotnet_style_prefer_inferred_tuple_names = false
Dim tuple = (name:=name, age:=age)

dotnet_style_prefer_inferred_anonymous_type_member_namesdotnet_style_prefer_inferred_anonymous_type_member_names

ルール名Rule name dotnet_style_prefer_inferred_anonymous_type_member_namesdotnet_style_prefer_inferred_anonymous_type_member_names
ルール IDRule ID IDE0037IDE0037
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - 推論された匿名型のメンバー名が優先されますtrue - Prefer inferred anonymous type member names

false - 明示的な匿名型のメンバー名が優先されますfalse - Prefer explicit anonymous type member names
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.6Visual Studio 2017 version 15.6

コード例: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 };
' dotnet_style_prefer_inferred_anonymous_type_member_names = true
Dim anon = New With {name, age}

' dotnet_style_prefer_inferred_anonymous_type_member_names = false
Dim anon = New With {.name = name, .age = age}

dotnet_style_prefer_auto_propertiesdotnet_style_prefer_auto_properties

ルール名Rule name dotnet_style_prefer_auto_propertiesdotnet_style_prefer_auto_properties
ルール IDRule ID IDE0032IDE0032
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - プライベート バッキング フィールドを持つプロパティよりも、自動プロパティが優先されますtrue - Prefer autoproperties over properties with private backing fields

false - 自動プロパティよりも、プライベート バッキング フィールドを持つプロパティが優先されますfalse - Prefer properties with private backing fields over autoproperties
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.7Visual Studio 2017 version 15.7

コード例:Code examples:

// dotnet_style_prefer_auto_properties = true
private int Age { get; }

// dotnet_style_prefer_auto_properties = false
private int age;

public int Age
{
    get
    {
        return age;
    }
}
' dotnet_style_prefer_auto_properties = true
Public ReadOnly Property Age As Integer

' dotnet_style_prefer_auto_properties = false
Private _age As Integer

Public ReadOnly Property Age As Integer
    Get
        return _age
    End Get
End Property

dotnet_style_prefer_is_null_check_over_reference_equality_methoddotnet_style_prefer_is_null_check_over_reference_equality_method

ルール名Rule name dotnet_style_prefer_is_null_check_over_reference_equality_methoddotnet_style_prefer_is_null_check_over_reference_equality_method
ルール IDRule ID IDE0041IDE0041
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - object.ReferenceEquals より、パターン一致の NULL 検査の使用が優先されますtrue - Prefer using a null check with pattern-matching over object.ReferenceEquals

false - パターン一致の NULL 検査より object.ReferenceEquals が優先されますfalse - Prefer object.ReferenceEquals over a null check with pattern-matching
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.7Visual Studio 2017 version 15.7

コード例:Code examples:

// dotnet_style_prefer_is_null_check_over_reference_equality_method = true
if (value is null)
    return;

// dotnet_style_prefer_is_null_check_over_reference_equality_method = false
if (object.ReferenceEquals(value, null))
    return;
' dotnet_style_prefer_is_null_check_over_reference_equality_method = true
If value Is Nothing
    Return
End If

' dotnet_style_prefer_is_null_check_over_reference_equality_method = false
If Object.ReferenceEquals(value, Nothing)
    Return
End If

dotnet_style_prefer_conditional_expression_over_assignmentdotnet_style_prefer_conditional_expression_over_assignment

ルール名Rule name dotnet_style_prefer_conditional_expression_over_assignmentdotnet_style_prefer_conditional_expression_over_assignment
ルール IDRule ID IDE0045IDE0045
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - if-else ステートメントよりも三項条件を使用する割り当てを優先しますtrue - Prefer assignments with a ternary conditional over an if-else statement

false - 三項条件よりも if-else ステートメントを使用する割り当てを優先しますfalse - Prefer assignments with an if-else statement over a ternary conditional
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.8Visual Studio 2017 version 15.8

コード例:Code examples:

// dotnet_style_prefer_conditional_expression_over_assignment = true
string s = expr ? "hello" : "world";

// dotnet_style_prefer_conditional_expression_over_assignment = false
string s;
if (expr)
{
    s = "hello";
}
else
{
    s = "world";
}
' dotnet_style_prefer_conditional_expression_over_assignment = true
Dim s As String = If(expr, "hello", "world")

' dotnet_style_prefer_conditional_expression_over_assignment = false
Dim s As String
If expr Then
    s = "hello"
Else
    s = "world"
End If

dotnet_style_prefer_conditional_expression_over_returndotnet_style_prefer_conditional_expression_over_return

ルール名Rule name dotnet_style_prefer_conditional_expression_over_returndotnet_style_prefer_conditional_expression_over_return
ルール IDRule ID IDE0046IDE0046
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - if-else ステートメントよりも三項条件を使用する return ステートメントを優先しますtrue - Prefer return statements to use a ternary conditional over an if-else statement

false - 三項条件よりも if-else ステートメントを使用する return ステートメントを優先しますfalse - Prefer return statements to use an if-else statement over a ternary conditional
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2017 バージョン 15.8Visual Studio 2017 version 15.8

コード例:Code examples:

// dotnet_style_prefer_conditional_expression_over_return = true
return expr ? "hello" : "world"

// dotnet_style_prefer_conditional_expression_over_return = false
if (expr)
{
    return "hello";
}
else
{
    return "world";
}
' dotnet_style_prefer_conditional_expression_over_return = true
Return If(expr, "hello", "world")

' dotnet_style_prefer_conditional_expression_over_return = false
If expr Then
    Return "hello"
Else
    Return "world"
End If

dotnet_style_prefer_compound_assignmentdotnet_style_prefer_compound_assignment

ルール名Rule name dotnet_style_prefer_compound_assignmentdotnet_style_prefer_compound_assignment
ルール IDRule ID IDE0054IDE0054
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - 複合代入式を優先しますtrue - Prefer compound assignment expressions

false - 複合代入式を優先しませんfalse - Don't prefer compound assignment expressions
Visual Studio の既定値Visual Studio default true:suggestion

コード例:Code examples:

// dotnet_style_prefer_compound_assignment = true
x += 1;

// dotnet_style_prefer_compound_assignment = false
x = x + 1;
' dotnet_style_prefer_compound_assignment = true
x += 1

' dotnet_style_prefer_compound_assignment = false
x = x + 1

"Null" 検査設定Null-checking preferences

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

これらのルールは、次のように .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

dotnet_style_coalesce_expressiondotnet_style_coalesce_expression

ルール名Rule name dotnet_style_coalesce_expressiondotnet_style_coalesce_expression
ルール IDRule ID IDE0029IDE0029
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values true - 三項演算子検査ではなく null 結合式を使用しますtrue - Prefer null coalescing expressions to ternary operator checking

false - null 結合式ではなく三項演算子検査を使用しますfalse - Prefer ternary operator checking to null coalescing expressions
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

ルール名Rule name dotnet_style_null_propagationdotnet_style_null_propagation
ルール IDRule ID IDE0031IDE0031
該当言語Applicable languages C# 6.0+ および Visual Basic 14+C# 6.0+ and Visual Basic 14+
Values true - 可能であれば、null 条件演算子を使用しますtrue - Prefer to use null-conditional operator when possible

false - 可能であれば、三項 null 検査を使用しますfalse - Prefer to use ternary null checking where possible
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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)

.NET コードの品質の設定.NET code quality settings

このセクションの品質ルールは、C# と Visual Basic 両方のコードに適用されます。The quality rules in this section apply to both C# and Visual Basic code. これらは、Visual Studio 統合開発環境 (IDE) に組み込まれているコード アナライザーの構成に使用されます。They're used to configure code analyzers that are built into the Visual Studio integrated development environment (IDE). EditorConfig ファイルを使用した FxCop アナライザーの構成について詳しくは、「Configure FxCop analyzers (FxCop アナライザーを構成する)」をご覧ください。For information about configuring FxCop analyzers with an EditorConfig file, see Configure FxCop analyzers.

パラメーターのユーザー設定Parameter preferences

このセクションの品質ルールは、メソッドのパラメーターに関係します。The quality rules in this section concern method parameters.

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

# CSharp and Visual Basic code quality settings:
[*.{cs,vb}]
dotnet_code_quality_unused_parameters = all:suggestion

dotnet_code_quality_unused_parametersdotnet_code_quality_unused_parameters

ルール名Rule name dotnet_code_quality_unused_parametersdotnet_code_quality_unused_parameters
ルール IDRule ID IDE0060IDE0060
該当言語Applicable languages C# および Visual BasicC# and Visual Basic
Values all - 使用されていないパラメーターが含まれる、すべてのアクセシビリティのメソッドにフラグを設定しますall - Flag methods with any accessibility that contain unused parameters

non_public - 使用されていないパラメーターが含まれるメソッドのうち、パブリックではないものだけにフラグを設定しますnon_public - Flag only non-public methods that contain unused parameters
Visual Studio の既定値Visual Studio default all:suggestion

コード例:Code examples:

// dotnet_code_quality_unused_parameters = all:suggestion
public int GetNum() { return 1; }

// dotnet_code_quality_unused_parameters = non_public:suggestion
public int GetNum(int arg1) { return 1; }
' dotnet_code_quality_unused_parameters = all:suggestion
Public Function GetNum()
    Return 1
End Function

' dotnet_code_quality_unused_parameters = non_public:suggestion
Public Function GetNum(arg1 As Integer)
    Return 1
End Function

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

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

  • 暗黙的な型と明示的な型Implicit and explicit types
    • csharp_style_var_for_built_in_typescsharp_style_var_for_built_in_types
    • csharp_style_var_when_type_is_apparentcsharp_style_var_when_type_is_apparent
    • csharp_style_var_elsewherecsharp_style_var_elsewhere
  • 式形式のメンバーExpression-bodied members
    • csharp_style_expression_bodied_methodscsharp_style_expression_bodied_methods
    • csharp_style_expression_bodied_constructorscsharp_style_expression_bodied_constructors
    • csharp_style_expression_bodied_operatorscsharp_style_expression_bodied_operators
    • csharp_style_expression_bodied_propertiescsharp_style_expression_bodied_properties
    • csharp_style_expression_bodied_indexerscsharp_style_expression_bodied_indexers
    • csharp_style_expression_bodied_accessorscsharp_style_expression_bodied_accessors
    • csharp_style_expression_bodied_lambdascsharp_style_expression_bodied_lambdas
    • csharp_style_expression_bodied_local_functionscsharp_style_expression_bodied_local_functions
  • パターン マッチングPattern matching
    • csharp_style_pattern_matching_over_is_with_cast_checkcsharp_style_pattern_matching_over_is_with_cast_check
    • csharp_style_pattern_matching_over_as_with_null_checkcsharp_style_pattern_matching_over_as_with_null_check
  • インライン変数宣言Inlined variable declarations
    • csharp_style_inlined_variable_declarationcsharp_style_inlined_variable_declaration
  • 式レベル基本設定Expression-level preferences
    • csharp_prefer_simple_default_expressioncsharp_prefer_simple_default_expression
  • "null" チェック設定"Null" checking preferences
    • csharp_style_throw_expressioncsharp_style_throw_expression
    • csharp_style_conditional_delegate_callcsharp_style_conditional_delegate_call
  • コード ブロック基本設定Code block preferences
    • csharp_prefer_bracescsharp_prefer_braces
  • 未使用の値のユーザー設定Unused value preferences
    • csharp_style_unused_value_expression_statement_preferencecsharp_style_unused_value_expression_statement_preference
    • csharp_style_unused_value_assignment_preferencecsharp_style_unused_value_assignment_preference
  • インデックスと範囲のユーザー設定Index and range preferences
    • csharp_style_prefer_index_operatorcsharp_style_prefer_index_operator
    • csharp_style_prefer_range_operatorcsharp_style_prefer_range_operator
  • その他のユーザー設定Miscellaneous preferences
    • csharp_style_deconstructed_variable_declarationcsharp_style_deconstructed_variable_declaration
    • csharp_style_pattern_local_over_anonymous_functioncsharp_style_pattern_local_over_anonymous_function
    • csharp_using_directive_placementcsharp_using_directive_placement
    • csharp_prefer_static_local_functioncsharp_prefer_static_local_function
    • csharp_prefer_simple_using_statementcsharp_prefer_simple_using_statement
    • csharp_style_prefer_switch_expressioncsharp_style_prefer_switch_expression

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

このセクションのスタイル ルールは、変数宣言での var キーワードと明示的な型の使用に関するものです。The style rules in this section 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.

.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

csharp_style_var_for_built_in_typescsharp_style_var_for_built_in_types

ルール名Rule name csharp_style_var_for_built_in_typescsharp_style_var_for_built_in_types
ルール IDRule ID IDE0007、IDE0008IDE0007 and IDE0008
該当言語Applicable languages C#C#
Values true - int などのビルトイン システム型で変数を宣言する場合に var を使用しますtrue - Prefer var is used to declare variables with built-in system types such as int

false - int などのビルトイン システム型で変数を宣言する場合に var ではなく明示的な型を使用します。false - Prefer explicit type over var to declare variables with built-in system types such as int
Visual Studio の既定値Visual Studio default true:silent

コード例: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

ルール名Rule name csharp_style_var_when_type_is_apparentcsharp_style_var_when_type_is_apparent
ルール IDRule ID IDE0007、IDE0008IDE0007 and IDE0008
該当言語Applicable languages C#C#
Values true - 宣言式の右側で型が既に述べられているときに var を使用しますtrue - Prefer var when the type is already mentioned on the right-hand side of a declaration expression

false - 宣言式の右側で型が既に示されているときに var ではなく明示的な型を使用しますfalse - Prefer explicit type over var when the type is already mentioned on the right-hand side of a declaration expression
Visual Studio の既定値Visual Studio default true:silent

コード例: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

ルール名Rule name csharp_style_var_elsewherecsharp_style_var_elsewhere
ルール IDRule ID IDE0007、IDE0008IDE0007 and IDE0008
該当言語Applicable languages C#C#
Values true - 別のコード スタイル ルールでオーバーライドされない限り、すべての場合に明示的な型ではなく var を使用しますtrue - Prefer var over explicit type in all cases, unless overridden by another code style rule

false - 別のコード スタイル ルールでオーバーライドされない限り、すべての場合に var ではなく明示的な型を使用しますfalse - Prefer explicit type over var in all cases, unless overridden by another code style rule
Visual Studio の既定値Visual Studio default true:silent

コード例:Code examples:

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

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

式形式のメンバー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.

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

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

csharp_style_expression_bodied_methodscsharp_style_expression_bodied_methods

ルール名Rule name csharp_style_expression_bodied_methodscsharp_style_expression_bodied_methods
ルール IDRule ID IDE0022IDE0022
該当言語Applicable languages C# 6.0+C# 6.0+
Values true - メソッドに式本体を使用しますtrue - Prefer expression bodies for methods

when_on_single_line - 単一行になる場合は、メソッドに式本体を使用しますwhen_on_single_line - Prefer expression bodies for methods when they will be a single line

false - メソッドにブロック本体を使用しますfalse - Prefer block bodies for methods
Visual Studio の既定値Visual Studio default false:silent

コード例: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

ルール名Rule name csharp_style_expression_bodied_constructorscsharp_style_expression_bodied_constructors
ルール IDRule ID IDE0021IDE0021
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - コンストラクターに式本体を使用しますtrue - Prefer expression bodies for constructors

when_on_single_line - 単一行になる場合は、コンストラクターに式本体を使用しますwhen_on_single_line - Prefer expression bodies for constructors when they will be a single line

false - コンストラクターにブロック本体を使用しますfalse - Prefer block bodies for constructors
Visual Studio の既定値Visual Studio default false:silent

コード例: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

ルール名Rule name csharp_style_expression_bodied_operatorscsharp_style_expression_bodied_operators
ルール IDRule ID IDE0023 と IDE0024IDE0023 and IDE0024
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - 演算子に式本体を使用しますtrue - Prefer expression bodies for operators

when_on_single_line - 単一行になる場合は、演算子に式本体を使用しますwhen_on_single_line - Prefer expression bodies for operators when they will be a single line

false - 演算子にブロック本体を使用しますfalse - Prefer block bodies for operators
Visual Studio の既定値Visual Studio default false:silent

コード例: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

ルール名Rule name csharp_style_expression_bodied_propertiescsharp_style_expression_bodied_properties
ルール IDRule ID IDE0025IDE0025
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - プロパティに式本体を使用しますtrue - Prefer expression bodies for properties

when_on_single_line - 単一行になる場合は、プロパティに式本体を使用しますwhen_on_single_line - Prefer expression bodies for properties when they will be a single line

false - プロパティにブロック本体を使用しますfalse - Prefer block bodies for properties
Visual Studio の既定値Visual Studio default true:silent

コード例: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

ルール名Rule name csharp_style_expression_bodied_indexerscsharp_style_expression_bodied_indexers
ルール IDRule ID IDE0026IDE0026
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - インデクサーに式本体を使用しますtrue - Prefer expression bodies for indexers

when_on_single_line - 単一行になる場合は、インデクサーに式本体を使用しますwhen_on_single_line - Prefer expression bodies for indexers when they will be a single line

false - インデクサーにブロック本体を使用しますfalse - Prefer block bodies for indexers
Visual Studio の既定値Visual Studio default true:silent

コード例:Code examples:

// csharp_style_expression_bodied_indexers = true
public T this[int i] => _values[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

ルール名Rule name csharp_style_expression_bodied_accessorscsharp_style_expression_bodied_accessors
ルール IDRule ID IDE0027IDE0027
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - アクセサーに式本体を使用しますtrue - Prefer expression bodies for accessors

when_on_single_line - 単一行になる場合は、アクセサーに式本体を使用しますwhen_on_single_line - Prefer expression bodies for accessors when they will be a single line

false - アクセサーにブロック本体を使用しますfalse - Prefer block bodies for accessors
Visual Studio の既定値Visual Studio default true:silent

コード例: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; } }

csharp_style_expression_bodied_lambdascsharp_style_expression_bodied_lambdas

ルール名Rule name csharp_style_expression_bodied_lambdascsharp_style_expression_bodied_lambdas
ルール IDRule ID IDE0053IDE0053
Values true - ラムダに式本体を使用しますtrue - Prefer expression bodies for lambdas

when_on_single_line - 単一行になる場合は、ラムダに式本体を使用しますwhen_on_single_line - Prefer expression bodies for lambdas when they will be a single line

false - ラムダにブロック本体を使用しますfalse - Prefer block bodies for lambdas
Visual Studio の既定値Visual Studio default true:silent

コード例:Code examples:

// csharp_style_expression_bodied_lambdas = true
Func<int, int> square = x => x * x;

// csharp_style_expression_bodied_lambdas = false
Func<int, int> square = x => { return x * x; };

csharp_style_expression_bodied_local_functionscsharp_style_expression_bodied_local_functions

C# 7.0 以降、C# ではローカル関数がサポートされています。Starting with C# 7.0, C# supports local functions. ローカル関数は、別のメンバーの入れ子になっているタイプのプライベート メソッドです。Local functions are private methods of a type that are nested in another member.

ルール名Rule name csharp_style_expression_bodied_local_functionscsharp_style_expression_bodied_local_functions
ルール IDRule ID IDE0061IDE0061
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - ローカル関数に式本体を使用しますtrue - Prefer expression bodies for local functions

when_on_single_line - 単一行になる場合は、ローカル関数に式本体を使用しますwhen_on_single_line - Prefer expression bodies for local functions when they will be a single line

false - ローカル関数にブロック本体を使用しますfalse - Prefer block bodies for local functions
Visual Studio の既定値Visual Studio default false:silent

コード例:Code examples:

// csharp_style_expression_bodied_local_functions = true
void M()
{
    Hello();
    void Hello() => Console.WriteLine("Hello");
}

// csharp_style_expression_bodied_local_functions = false
void M()
{
    Hello();
    void Hello()
    {
        Console.WriteLine("Hello");
    }
}

パターン マッチングPattern matching

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

.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

csharp_style_pattern_matching_over_is_with_cast_checkcsharp_style_pattern_matching_over_is_with_cast_check

ルール名Rule name csharp_style_pattern_matching_over_is_with_cast_checkcsharp_style_pattern_matching_over_is_with_cast_check
ルール IDRule ID IDE0020IDE0020
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - is 式と型キャストの代わりにパターン マッチングを使用しますtrue - Prefer pattern matching instead of is expressions with type casts

false - パターン マッチングの代わりに is 式と型キャストを使用しますfalse - Prefer is expressions with type casts instead of pattern matching
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

ルール名Rule name csharp_style_pattern_matching_over_as_with_null_checkcsharp_style_pattern_matching_over_as_with_null_check
ルール IDRule ID IDE0019IDE0019
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - as 式と null 検査の代わりにパターン マッチングを使用し、何かが特定の型であるか判断しますtrue - Prefer pattern matching instead of as expressions with null checks to determine if something is of a particular type

false - パターン マッチングの代わりに as 式と null 検査を使用し、何かが特定の型であるか判断しますfalse - Prefer as expressions with null checks instead of pattern matching to determine if something is of a particular type
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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) {...}

インライン変数宣言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.

csharp_style_inlined_variable_declarationcsharp_style_inlined_variable_declaration

ルール名Rule name csharp_style_inlined_variable_declarationcsharp_style_inlined_variable_declaration
ルール IDRule ID IDE0018IDE0018
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - 可能であれば、メソッド呼び出しの引数リスト内で out 変数をインラインで宣言しますtrue - Prefer out variables to be declared inline in the argument list of a method call when possible

false - メソッド呼び出しの前に out 変数を宣言しますfalse - Prefer out variables to be declared before the method call
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

C# の式レベルのユーザー設定C# expression-level preferences

このセクションのスタイル ルールには、式レベルのユーザー設定が関係します。The style rules in this section concern expression-level preferences.

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

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

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.

ルール名Rule name csharp_prefer_simple_default_expressioncsharp_prefer_simple_default_expression
ルール IDRule ID IDE0034IDE0034
該当言語Applicable languages C# 7.1+C# 7.1+
Values true - defaultdefault(T) より優先しますtrue - Prefer default over default(T)

false - default(T)default より優先しますfalse - Prefer default(T) over default
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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)) { ... }

C# の null チェックのユーザー設定C# 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.

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

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

csharp_style_throw_expressioncsharp_style_throw_expression

ルール名Rule name csharp_style_throw_expressioncsharp_style_throw_expression
ルール IDRule ID IDE0016IDE0016
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - throw ステートメントの代わりに throw 式を使用しますtrue - Prefer to use throw expressions instead of throw statements

false - throw 式の代わりに throw ステートメントを使用しますfalse - Prefer to use throw statements instead of throw expressions
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

ルール名Rule name csharp_style_conditional_delegate_callcsharp_style_conditional_delegate_call
ルール IDRule ID IDE0041IDE0041
該当言語Applicable languages C# 6.0+C# 6.0+
Values true - null チェックを実行する代わりに、ラムダ式の呼び出し時に条件付き合体演算子 (?.) を使用しますtrue - refer to use the conditional coalescing operator (?.) when invoking a lambda expression, instead of performing a null check

false - 条件付き合体演算子 (?.) を使用する代わりに、ラムダ式を呼び出す前に null チェックを実行しますfalse - Prefer to perform a null check before invoking a lambda expression, instead of using the conditional coalescing operator (?.)
Visual Studio の既定値Visual Studio default true:suggestion

コード例:Code examples:

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

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

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

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

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

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

csharp_prefer_bracescsharp_prefer_braces

ルール名Rule name csharp_prefer_bracescsharp_prefer_braces
ルール IDRule ID IDE0011IDE0011
該当言語Applicable languages C#C#
Values true - コードが 1 行であっても中かっこを使用しますtrue - Prefer curly braces even for one line of code

false - 中かっこは使用しません (許可されている場合)false - Prefer no curly braces if allowed

when_multiline - 複数の行で中かっこを使用しますwhen_multiline - Prefer curly braces on multiple lines
Visual Studio の既定値Visual Studio default true:silent

コード例:Code examples:

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

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

未使用の値のユーザー設定Unused value preferences

これらのスタイル ルールは、未使用の式と値の代入に関するものです。These style rules concern unused expressions and value assignments.

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

# CSharp code style settings:
[*.cs]
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
csharp_style_unused_value_assignment_preference = discard_variable:suggestion

csharp_style_unused_value_expression_statement_preferencecsharp_style_unused_value_expression_statement_preference

ルール名Rule name csharp_style_unused_value_expression_statement_preferencecsharp_style_unused_value_expression_statement_preference
ルール IDRule ID IDE0058IDE0058
該当言語Applicable languages C#C#
Values discard_variable - 未使用の式を破棄に割り当てますdiscard_variable - Prefer to assign an unused expression to a discard

unused_local_variable - 未使用の式をローカル変数に割り当てますunused_local_variable - Prefer to assign an unused expression to a local variable
Visual Studio の既定値Visual Studio default discard_variable:silent

コード例:Code examples:

// Original code:
System.Convert.ToInt32("35");

// After code fix for IDE0058:

// csharp_style_unused_value_expression_statement_preference = discard_variable
_ = System.Convert.ToInt32("35");

// csharp_style_unused_value_expression_statement_preference = unused_local_variable
var unused = Convert.ToInt32("35");

csharp_style_unused_value_assignment_preferencecsharp_style_unused_value_assignment_preference

ルール名Rule name csharp_style_unused_value_assignment_preferencecsharp_style_unused_value_assignment_preference
ルール IDRule ID IDE0059IDE0059
該当言語Applicable languages C#C#
Values discard_variable -使用されていない値を割り当てるときに、破棄を使用しますdiscard_variable - Prefer to use a discard when assigning a value that's not used

unused_local_variable -使用されていない値を割り当てるときに、ローカル変数を使用しますunused_local_variable - Prefer to use a local variable when assigning a value that's not used
Visual Studio の既定値Visual Studio default discard_variable:suggestion

コード例:Code examples:

// csharp_style_unused_value_assignment_preference = discard_variable
int GetCount(Dictionary<string, int> wordCount, string searchWord)
{
    _ = wordCount.TryGetValue(searchWord, out var count);
    return count;
}

// csharp_style_unused_value_assignment_preference = unused_local_variable
int GetCount(Dictionary<string, int> wordCount, string searchWord)
{
    var unused = wordCount.TryGetValue(searchWord, out var count);
    return count;
}

インデックスと範囲のユーザー設定Index and range preferences

これらのスタイル ルールは、インデックスおよび範囲演算子の使用に関するもので、C# 8.0 以降で使用できます。These style rules concern the use of index and range operators, which are available in C# 8.0 and later.

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

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

csharp_style_prefer_index_operatorcsharp_style_prefer_index_operator

ルール名Rule name csharp_style_prefer_index_operatorcsharp_style_prefer_index_operator
ルール IDRule ID IDE0056IDE0056
該当言語Applicable languages C# 8.0 以降C# 8.0+
Values true -コレクションの末尾からのインデックスを計算するときに、^ 演算子を使用しますtrue - Prefer to use the ^ operator when calculating an index from the end of a collection

false - コレクションの末尾からのインデックスを計算するときに、^ 演算子を使用しませんfalse - Don't prefer to use the ^ operator when calculating an index from the end of a collection
Visual Studio の既定値Visual Studio default true:suggestion

コード例:Code examples:

// csharp_style_prefer_index_operator = true
string[] names = { "Archimedes", "Pythagoras", "Euclid" };
var index = names[^1];

// csharp_style_prefer_index_operator = false
string[] names = { "Archimedes", "Pythagoras", "Euclid" };
var index = names[names.Length - 1];

csharp_style_prefer_range_operatorcsharp_style_prefer_range_operator

ルール名Rule name csharp_style_prefer_range_operatorcsharp_style_prefer_range_operator
ルール IDRule ID IDE0057IDE0057
該当言語Applicable languages C# 8.0 以降C# 8.0+
Values true - コレクションの "スライス" を抽出するときに、範囲演算子 .. を使用しますtrue - Prefer to use the range operator .. when extracting a "slice" of a collection

false - コレクションの "スライス" を抽出するときに、範囲演算子 .. を使用しませんfalse - Don't prefer to use the range operator .. when extracting a "slice" of a collection
Visual Studio の既定値Visual Studio default true:suggestion

コード例:Code examples:

// csharp_style_prefer_range_operator = true
string sentence = "the quick brown fox";
var sub = sentence[0..^4];

// csharp_style_prefer_range_operator = false
string sentence = "the quick brown fox";
var sub = sentence.Substring(0, sentence.Length - 4);

その他のユーザー設定Miscellaneous preferences

このセクションには、その他のスタイル ルールが含まれます。This section contains miscellaneous style rules.

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

# CSharp code style settings:
[*.cs]
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_simple_using_statement = true:suggestion
csharp_style_prefer_switch_expression = true:suggestion

csharp_style_deconstructed_variable_declarationcsharp_style_deconstructed_variable_declaration

ルール名Rule name csharp_style_deconstructed_variable_declarationcsharp_style_deconstructed_variable_declaration
ルール IDRule ID IDE0042IDE0042
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - 分解された変数宣言を優先しますtrue - Prefer deconstructed variable declaration

false - 変数宣言では分解を優先しませんfalse - Do not prefer deconstruction in variable declarations
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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

C# 7.0 以降、C# ではローカル関数がサポートされています。Starting with C# 7.0, C# supports local functions. ローカル関数は、別のメンバーの入れ子になっているタイプのプライベート メソッドです。Local functions are private methods of a type that are nested in another member.

ルール名Rule name csharp_style_pattern_local_over_anonymous_functioncsharp_style_pattern_local_over_anonymous_function
ルール IDRule ID IDE0039IDE0039
該当言語Applicable languages C# 7.0+C# 7.0+
Values true - 匿名関数よりローカル関数を優先しますtrue - Prefer local functions over anonymous functions

false - ローカル関数より匿名関数を優先しますfalse - Prefer anonymous functions over local functions
Visual Studio の既定値Visual Studio default true:suggestion

コード例: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);
};

csharp_using_directive_placementcsharp_using_directive_placement

ルール名Rule name csharp_using_directive_placementcsharp_using_directive_placement
ルール IDRule ID IDE0065IDE0065
該当言語Applicable languages C#C#
Values outside_namespace - using ディレクティブを名前空間の外側に配置しますoutside_namespace - Prefer using directives to be placed outside the namespace

inside_namespace - using ディレクティブを名前空間の内側に配置しますinside_namespace - Prefer using directives to be placed inside the namespace
Visual Studio の既定値Visual Studio default outside_namespace:silent

コード例:Code examples:

// csharp_using_directive_placement = outside_namespace
using System;

namespace Conventions
{
    ...
}

// csharp_using_directive_placement = inside_namespace
namespace Conventions
{
    using System;
    ...
}

csharp_prefer_static_local_functioncsharp_prefer_static_local_function

ルール名Rule name csharp_prefer_static_local_functioncsharp_prefer_static_local_function
ルール IDRule ID IDE0062IDE0062
該当言語Applicable languages C# 8.0 以降C# 8.0+
Values true - ローカル関数を static でマークしますtrue - Prefer local functions to be marked static

false - ローカル関数を static でマークしませんfalse - Don't prefer local functions to be marked static
Visual Studio の既定値Visual Studio default true:suggestion

コード例:Code examples:

// csharp_prefer_static_local_function = true
void M()
{
    Hello();
    static void Hello()
    {
        Console.WriteLine("Hello");
    }
}

// csharp_prefer_static_local_function = false
void M()
{
    Hello();
    void Hello()
    {
        Console.WriteLine("Hello");
    }
}

csharp_prefer_simple_using_statementcsharp_prefer_simple_using_statement

ルール名Rule name csharp_prefer_simple_using_statementcsharp_prefer_simple_using_statement
ルール IDRule ID IDE0063IDE0063
該当言語Applicable languages C# 8.0 以降C# 8.0+
Values true - "単純な" using ステートメントの使用を優先しますtrue - Prefer to use a simple using statement

false - "単純な" using ステートメントの使用を優先しませんfalse - Don't prefer to use a simple using statement
Visual Studio の既定値Visual Studio default true:suggestion

コード例:Code examples:

// csharp_prefer_simple_using_statement = true
using var a = b;

// csharp_prefer_simple_using_statement = false
using (var a = b) { }

csharp_style_prefer_switch_expressioncsharp_style_prefer_switch_expression

ルール名Rule name csharp_style_prefer_switch_expressioncsharp_style_prefer_switch_expression
ルール IDRule ID IDE0066IDE0066
該当言語Applicable languages C# 8.0 以降C# 8.0+
Values true - switch 式 (C# 8.0 で導入) を使用しますtrue - Prefer to use a switch expression (introduced with C# 8.0)

false - switch ステートメントを使用しますfalse - Prefer to use a switch statement
Visual Studio の既定値Visual Studio default true:suggestion
導入されたバージョンIntroduced version Visual Studio 2019 バージョン 16.2Visual Studio 2019 version 16.2

コード例:Code examples:

// csharp_style_prefer_switch_expression = true
return x switch
{
    1 => 1 * 1,
    2 => 2 * 2,
    _ => 0,
};

// csharp_style_prefer_switch_expression = false
switch (x)
{
    case 1:
        return 1 * 1;
    case 2:
        return 2 * 2;
    default:
        return 0;
}

関連項目See also