EditorConfig の .NET コード スタイル設定

使用可能な値

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

コード スタイル オプションには、true (このオプションを使用する) または false (このオプションを使用しない)、コロン (:)、重要度 (nonesuggestionwarning、または error) を指定する必要があります。 重要度は、コード ベースでそのスタイルに適用する強制レベルを意味します。

重要度 効果
none このスタイルに準拠していないとき、ユーザーには何も表示されませんが、コード生成機能はこのスタイルで生成します。
修正候補 このスタイルに準拠していないとき、修正候補としてユーザーに表示されます (最初の 2 文字の下に点線が付きます)。
警告 このスタイルに準拠していないとき、コンパイラの警告が表示されます。
エラー このスタイルに準拠していないとき、コンパイラ エラーが表示されます。

.NET コード スタイルのオプション

"This." と "Me."修飾

フィールド

オプション名 dotnet_style_qualification_for_field
該当言語 C# および Visual Basic
説明 適用済み
True 非静的メソッドで使用されるすべての非静的フィールドに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けます。 C#:
this.capacity = 0;

Visual Basic: Me.capacity = 0
False 非静的メソッドで使用されるすべての非静的フィールドに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けません。 C#:
capacity = 0;

Visual Basic: capacity = 0

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs,*.vb]
dotnet_style_qualification_for_field = false:suggestion

プロパティ

オプション名 dotnet_style_qualification_for_property
該当言語 C# および Visual Basic
説明 適用済み
True 非静的メソッドで使用されるすべての非静的プロパティに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けます。 C#:
this.ID = 0;

Visual Basic: Me.ID = 0
False 非静的メソッドで使用されるすべての非静的プロパティに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けません C#:
ID = 0;

Visual Basic: ID = 0

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs,*.vb]
dotnet_style_qualification_for_property = false:suggestion

メソッド

オプション名 dotnet_style_qualification_for_method
該当言語 C# および Visual Basic
説明 適用済み
True 非静的メソッド内から呼び出されるすべての非静的フィールドに C# の場合に this. を、VB の場合に Me. を接頭辞として付けます。 C#:
this.Display();

Visual Basic: Me.Display()
False 非静的メソッド内から呼び出されるすべての非静的フィールドに C# の場合に this. を、VB の場合に Me. を接頭辞として付けません C#:
Display();

Visual Basic: Display()

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_qualification_for_method = false:suggestion

イベント

オプション名 dotnet_style_qualification_for_event
該当言語 C# および Visual Basic
説明 適用済み
True 非静的メソッド内から参照されるすべての非静的イベントに C# の場合に this. を、VB の場合に Me. を接頭辞として付けます。 C#:
this.Elapsed += Handler;

Visual Basic: AddHandler Me.Elapsed, AddressOf Handler
False 非静的メソッド内から参照されるすべての非静的イベントに C# の場合に this. を、VB の場合に Me. を接頭辞として付けません C#:
Elapsed += Handler;

Visual Basic: AddHandler Elapsed, AddressOf Handler

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_qualification_for_event = false:suggestion

型参照のための言語キーワードの型名 (int や string など) とフレームワークの型名

ローカル、パラメーター、メンバー

オプション名 dotnet_style_predefined_type_for_locals_parameters_members
該当言語 C# および Visual Basic
説明 適用済み
True ローカル、パラメーター、型メンバーの場合、型を表す言語キーワードを持つ型を使用し (intdoublefloatshortlongdecimalstring)、型名 (Int32Int64 など) の代わりにキーワードを使用します。 C#:
private int _member;

Visual Basic: Private _member As Integer
False ローカル、パラメーター、型メンバーの場合、型を表す言語キーワードを持つ型を使用し (intdoublefloatshortlongdecimalstring)、キーワードの代わりに型名 (Int32Int64 など) を使用します。 C#:
private Int32 _member;

Visual Basic: Private _member As Int32

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion

メンバー アクセス式

オプション名 dotnet_style_predefined_type_for_member_access
該当言語 C# および Visual Basic
説明 適用済み
True キーワード表現 (intdoublefloatshortlongdecimalstring) のある型でメンバー アクセス式が使用されるとき、キーワードを使用します。 C#:
var local = int.MaxValue;

Visual Basic: Dim local = Integer.MaxValue
False キーワード表現 (intdoublefloatshortlongdecimalstring) のある型でメンバー アクセス式が使用されるとき、型名を使用します。 C#:
var local = Int32.MaxValue;

Visual Basic: Dim local = Int32.MaxValue

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_predefined_type_for_member_access = true:suggestion

式レベル基本設定

オブジェクト初期化子

オプション名 dotnet_style_object_initializer
該当言語 C# および Visual Basic
説明 適用済み
True 可能であれば、オブジェクト初期化子を使用し、オブジェクトを初期化します。 C#:
var c = new Customer(){ Age = 21 };

Visual Basic: Dim c = New Customer() With { .Age = 21 }
False オブジェクト初期化子でオブジェクトを初期化しません C#:
var c = new Customer();
c.Age = 21;

Visual Basic:
Dim c = new Customer()
c.Age = 21

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_object_initializer = true:suggestion

コレクション初期化子

オプション名 dotnet_style_collection_initializer
該当言語 C# および Visual Basic
説明 適用済み
True 可能であれば、コレクション初期化子を使用してコレクションを初期化します。 C#:
var list = new List<int>{ 1, 2, 3 };

Visual Basic:
Dim list = new List(Of Integer) From { 1, 2, 3}
False オブジェクト初期化子でコレクションを初期化しません C#:
var list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

Visual Basic:
Dim list = new List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_collection_initializer = true:suggestion

明示的なタプル名

オプション名 dotnet_style_explicit_tuple_names
該当言語 C# および Visual Basic
説明 適用済み
True ItemX プロパティではなくタプル名を使用します。 C#:
(string name, int age) customer = GetCustomer();
var name = customer.name;

Visual Basic:
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.name
False タプル名ではなく ItemX プロパティを使用します。 C#:
(string name, int age) customer = GetCustomer();
var name = customer.Item1;

Visual Basic:
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.Item1

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_explicit_tuple_names = true:suggestion

"null" 検査の結合式

オプション名 dotnet_style_coalesce_expression
該当言語 C# および Visual Basic
説明 適用済み
True 三項演算子検査ではなく null 結合式を使用します。 C#:
var v = x ?? y;

Visual Basic:
Dim v = If(x, y)
False null 結合式ではなく三項演算子検査を使用します。 C#:
var v = x != null ? x : y; // or
var v = x == null ? y : x;

Visual Basic:
Dim v = If(x Is Nothing, y, x) ' or
Dim v = If(x IsNot Nothing, x, y)

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_coalesce_expression = true:suggestion

"null" 検査の Null 値反映

オプション名 dotnet_style_null_propagation
該当言語 C# および Visual Basic
説明 適用済み
True 可能であれば、null 条件演算子を使用します。 C#:
var v = o?.ToString();

Visual Basic:
Dim v = o?.ToString()
False 可能であれば、三項 null 検査を使用します。 C#:
var v = o == null ? null : o.ToString(); // or
var v = o != null ? o.String() : null;

Visual Basic:
Dim v = If(o Is Nothing, Nothing, o.ToString()) ' or
Dim v = If(o IsNot Nothing, o.ToString(), Nothing)

EditorConfig ファイルの例:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_null_propagation = true:suggestion

CSharp コード スタイルの設定

"var"

組み込み型の "var"

オプション名 csharp_style_var_for_built_in_types
該当言語 C#
説明 適用済み
True int などの組み込みシステム型に var を使用します。 C#:
var x = 5;
False int などの組み込みシステム型に var を使用しません。 C#:
int x = 5;

EditorConfig ファイルの例:

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

型が明らかな場合の "var"

オプション名 csharp_style_var_when_type_is_apparent
該当言語 C#
説明 適用済み
True 宣言式の右側で型が既に述べられているときに var を使用します。 C#:
var obj = new C();
False 宣言式の右側で型が既に述べられているときに var を使用しません。 C#:
C obj = new C();

EditorConfig ファイルの例:

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

それ以外の場所の "var"

オプション名 csharp_style_var_elsewhere
該当言語 C#
説明 適用済み
True 別のコード スタイル ルールにより上書きされない限り、あらゆるケースで var を使用します。 C#:
var f = this.Init();
False 別のコード スタイル ルールにより上書きされない限りあらゆるケースで var を使用することは望みません。 C#:
bool f = this.Init();

EditorConfig ファイルの例:

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

メソッド

オプション名 csharp_style_expression_bodied_methods
該当言語 C#
説明 適用済み
True メソッドに式形式メンバーを使用します。 C#:
public int GetAge() => this.Age;
False メソッドに式形式メンバーを使用しません。 C#:
public int GetAge() { return this.Age; }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_methods = false:none

コンストラクター

オプション名 csharp_style_expression_bodied_constructors
該当言語 C#
説明 適用済み
True コンストラクターに式形式メンバーを使用します。 C#:
public Customer(int age) => Age = age;
False コンストラクターに式形式メンバーを使用しません。 C#:
public Customer(int age) { Age = age; }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_constructors = false:none

演算子

オプション名 csharp_style_expression_bodied_operators
該当言語 C#
説明 適用済み
True 演算子に式形式メンバーを使用します。 C#:
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
=> new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);
False 演算子に式形式メンバーを使用しません。 C#:
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
{ return new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary); }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_operators = false:none

プロパティ

オプション名 csharp_style_expression_bodied_properties
該当言語 C#
説明 適用済み
True プロパティに式形式メンバーを使用します。 C#:
public int Age => _age;
False プロパティに式形式メンバーを使用しません。 C#:
public int Age { get { return _age; }}

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_properties = false:none

インデクサー

オプション名 csharp_style_expression_bodied_indexers
該当言語 C#
説明 適用済み
True インデクサーに式形式メンバーを使用します。 C#:
public T this[int i] => _value[i];
False インデクサーに式形式メンバーを使用しません。 C#:
public T this[int i] { get { return _values[i]; } }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_indexers = false:none

アクセサー

オプション名 csharp_style_expression_bodied_accessors
該当言語 C#
説明 適用済み
True アクセサーに式形式メンバーを使用します。 C#:
public int Age { get => _age; set => _age = value; }
False アクセサーに式形式メンバーを使用しません。 C#:
public int Age { get { return _age; } set { _age = value; } }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_accessors = false:none

パターン マッチング

"cast" 検査の "is"

オプション名 csharp_style_pattern_matching_over_is_with_cast_check
該当言語 C#
説明 適用済み
True is 式と型キャストの代わりにパターン マッチングを使用します。 C#:
if (o is int i) {...}
False パターン マッチングの代わりに is 式と型キャストを使用します。 C#:
if (o is int) {var i = (int)o; ... }

EditorConfig ファイルの例:

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

"null" 検査の "as"

オプション名 csharp_style_pattern_matching_over_as_with_null_check
該当言語 C#
説明 適用済み
True as 式と null 検査の代わりにパターン マッチングを使用し、何かが特定の型であるか判断します。 C#:
if (o is string s) {...}
False パターン マッチングの代わりに as 式と null 検査を使用し、何かが特定の型であるか判断します。 C#:
var s = o as string; if (s != null) {...}

EditorConfig ファイルの例:

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

インライン変数宣言

オプション名 csharp_style_inlined_variable_declaration
該当言語 C#
説明 適用済み
True 可能であれば、out 変数をインラインで宣言します。 C#:
if (int.TryParse(value, out int i) {...}
False out 変数を明示的に宣言します。 C#:
int i; if (int.TryParse(value, out i) {...}

EditorConfig ファイルの例:

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

"Null" 検査設定

スロー式

オプション名 csharp_style_throw_expression
該当言語 C#
説明 適用済み
True スロー ステートメントの代わりにスロー式を使用します。 C#:
this.s = ss ?? throw new ArgumentNullException(nameof(s));
False スロー式の代わりにスロー ステートメントを使用します。 C#:
if (s==null) {throw new ArgumentNullException(nameof(s));} this.s = s;

EditorConfig ファイルの例:

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

条件付き代理呼び出しを使用する

オプション名 csharp_style_conditional_delegate_call
該当言語 C#
説明 適用済み
True null 検査を実行する代わりに lambda を呼び出すとき、条件付き結合演算 (?.) を使用します。 C#:
func?.Invoke(args);
False 条件付き結合演算 (?.) を使用する代わりに lambda を呼び出す前に null 検査を実行します。 C#:
if (func!=null) { func(args); }

EditorConfig ファイルの例:

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