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를 사용하여 코드 베이스에 일관성을 적용하는 방법에 대한 자세한 내용을 보려면 휴대용, 사용자 지정 편집기 옵션 만들기를 참고하세요.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 코딩 규칙 범주에는 세 가지가 있습니다.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 or 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.
suggestionsuggestion 이 스타일 규칙을 위반하는 경우 이를 사용자에게 제안으로 표시합니다.When this style rule is violated, show it to the user as a suggestion. 제안은 처음 두 개의 문자 아래에 세 개의 회색 점으로 표시됩니다.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# 코드 스타일 설정C# code style settings
    • 암시적 및 명시적 형식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
    • 패턴 일치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
      • csharp_style_deconstructed_variable_declarationcsharp_style_deconstructed_variable_declaration
      • csharp_style_pattern_local_over_anonymous_functioncsharp_style_pattern_local_over_anonymous_function
    • "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

.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:nonefalse:none
dotnet_style_qualification_for_propertydotnet_style_qualification_for_property C# 및 Visual BasicC# and Visual Basic false:nonefalse:none
dotnet_style_qualification_for_methoddotnet_style_qualification_for_method C# 및 Visual BasicC# and Visual Basic false:nonefalse:none
dotnet_style_qualification_for_eventdotnet_style_qualification_for_event C# 및 Visual BasicC# and Visual Basic false:nonefalse: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) 대신 언어 키워드(예: int 또는 Integer)를 사용하는 것이 좋습니다.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:nonetrue: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:nonetrue: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, specifying the desired modifier sort order, and requiring the read-only modifier.

다음 표에서는 규칙 이름, 규칙 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:none 15.515.5
visual_basic_preferred_modifier_ordervisual_basic_preferred_modifier_order IDE0036IDE0036 Visual BasicVisual Basic 부분, 기본, 개인, 보호됨, 공용, 친구, NotOverridable, 재정의 가능, MustOverride, 오버로드, 재정의, MustInherit, NotInheritable, 고정, 공유, 그림자, 읽기 전용, 쓰기 전용, 차원, Const, WithEvents, 확대, 축소, 사용자 지정, 비동기: 없음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:none 15.515.5
dotnet_style_readonly_fielddotnet_style_readonly_field IDE0044IDE0044 C# 및 Visual BasicC# and Visual Basic true:suggestiontrue:suggestion 15.715.7

dotnet_style_require_accessibility_modifiersdotnet_style_require_accessibility_modifiers

이 규칙은 true 또는 false 값을 허용하지 않습니다. 대신 다음 테이블의 값을 허용합니다.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 is the same as always and has been added for future proofing 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

dotnet_style_readonly_fielddotnet_style_readonly_field

  • 이 규칙이 true로 설정된 경우 인라인으로만 할당되거나 생성자 내부에 있으면 필드를 readonly(C#) 또는 ReadOnly(Visual Basic)로 표시해야 합니다.When this rule is set to 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)로 표시할지 여부를 지정하지 않습니다.When this rule is set to false, specify no preference over whether fields should be marked with readonly (C#) or ReadOnly (Visual Basic).

코드 예제: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

이러한 규칙은 .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

식 수준 기본 설정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:suggestiontrue:suggestion 첫 번째 릴리스First release
dotnet_style_collection_initializerdotnet_style_collection_initializer IDE0028IDE0028 C# 및 Visual BasicC# and Visual Basic true:suggestiontrue: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:suggestiontrue: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:suggestiontrue: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:suggestiontrue: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:suggestiontrue: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:suggestiontrue:suggestion 첫 번째 릴리스First release

dotnet_style_coalesce_expressiondotnet_style_coalesce_expression

  • 이 규칙을 true로 설정하면 3개로 구성된 연산자 검사보다 null 결합 식을 사용하는 것이 좋습니다.When this rule is set to true, prefer null coalescing expressions to ternary operator checking.
  • 이 규칙을 false로 설정하면 null 병합 식보다 3개로 구성된 연산자 검사를 사용하는 것이 좋습니다.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로 설정하면 가능한 경우 3개로 구성된 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:nonetrue:none
csharp_style_var_when_type_is_apparentcsharp_style_var_when_type_is_apparent C#C# true:nonetrue:none
csharp_style_var_elsewherecsharp_style_var_elsewhere C#C# true:nonetrue: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:nonefalse:none 15.315.3
csharp_style_expression_bodied_constructorscsharp_style_expression_bodied_constructors IDE0021IDE0021 C# 7.0+C# 7.0+ false:nonefalse:none 15.315.3
csharp_style_expression_bodied_operatorscsharp_style_expression_bodied_operators IDE0023 및 IDE0024IDE0023 and IDE0024 C# 7.0+C# 7.0+ false:nonefalse:none 15.315.3
csharp_style_expression_bodied_propertiescsharp_style_expression_bodied_properties IDE0025IDE0025 C# 7.0+C# 7.0+ true:nonetrue:none 15.315.3
csharp_style_expression_bodied_indexerscsharp_style_expression_bodied_indexers IDE0026IDE0026 C# 7.0+C# 7.0+ true:nonetrue:none 15.315.3
csharp_style_expression_bodied_accessorscsharp_style_expression_bodied_accessors IDE0027IDE0027 C# 7.0+C# 7.0+ true:nonetrue: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:suggestiontrue: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:suggestiontrue: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로 설정하면 null 검사를 포함하는 as 식 대신 패턴 일치를 사용하여 항목이 특정 형식인지 확인하는 것이 좋습니다.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로 설정하면 패턴 일치 대신 null 검사를 포함하는 as 식을 사용하여 항목이 특정 형식인지 확인하는 것이 좋습니다.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:suggestiontrue: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:suggestiontrue:suggestion 15.315.3
csharp_style_deconstructed_variable_declarationcsharp_style_deconstructed_variable_declaration IDE0042IDE0042 C# 7.0+C# 7.0+ true:suggestiontrue: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:suggestiontrue: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:suggestiontrue:suggestion
csharp_style_conditional_delegate_callcsharp_style_conditional_delegate_call IDE0041IDE0041 C# 6.0+C# 6.0+ true:suggestiontrue: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:nonetrue:none 15.315.3

csharp_prefer_bracescsharp_prefer_braces

  • 이 규칙을 true로 설정하면 하나의 코드 줄에 대해서도 중괄호를 사용하는 것이 좋습니다.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로 설정되면 다른 using 지시문 앞에 System.* 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. 이 규칙의 경우 true 또는 false를 지정하지 않습니다.For this rule, you do not specify true or false. 대신 모두, 없음 또는 하나 이상의 코드 요소(예: 메서드 또는 속성)를 지정하여 이 규칙을 적용할 시점을 정의합니다.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)
없음none 모든 식("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 사례 콘텐츠를 들여씁니다.When this rule is set to true, indent switch case contents.
  • 이 규칙을 false로 설정하면 switch 사례 콘텐츠를 들여쓰지 않습니다.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

이 규칙은 true 또는 false 값을 허용하지 않습니다. 대신 다음 테이블의 값을 허용합니다.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 레이블은 현재 컨텍스트에 하나 적은 들여쓰기로 배치됩니다.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

이 규칙은 다음 표에서 하나 이상의 값을 허용합니다.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_statements, expressions 또는 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

이러한 서식 설정 규칙은 문 및 코드 블록에 단일 줄 및 별도 줄을 사용하는 것을 다룹니다.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로 설정되면 문과 멤버 선언을 동일한 줄에 유지합니다.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로 설정하면 코드 블록은 한 줄에 유지합니다.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