C# 格式设置选项

本文中的格式设置选项仅适用于 C# 代码。 这些是代码样式规则 IDE0055 的选项。

换行选项

“新行”选项涉及使用新行来设置代码格式。

.editorconfig 文件示例:

#  CSharp formatting rules:
[*.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

csharp_new_line_before_open_brace

此选项与左大括号 { 应放在前面代码的同一行还是新行上有关。 对于此规则,指定“全部”、“无”或一个或多个码位元素,如方法或属性,从而定义此规则的应用时间 。 若要指定多个代码元素,请使用逗号 (,) 分隔。

Property 价值 说明
选项名称 csharp_new_line_before_open_brace
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 all 对于所有表达式,要求将大括号置于新行上(“Allman”样式)。
none 对于所有表达式,需要将大括号置于同一行(“K&R”)。
accessors, anonymous_methods, anonymous_types, control_blocks, events, indexers,
lambdas, local_functions, methods, object_collection_array_initializers, properties, types
对于指定的代码元素,要求将大括号置于新行上(“Allman”样式)。
默认选项值 all

代码示例:

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

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

csharp_new_line_before_else

属性 价值 说明
选项名称 csharp_new_line_before_else
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true else 语句置于新行。
false else 语句置于同一行。
默认选项值 true

代码示例:

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

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

csharp_new_line_before_catch

属性 价值 说明
选项名称 csharp_new_line_before_catch
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true catch 语句置于新行。
false catch 语句置于同一行。
默认选项值 true

代码示例:

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

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

csharp_new_line_before_finally

属性 价值 说明
选项名称 csharp_new_line_before_finally
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 需要将 finally 语句置于右大括号后的新行。
false 需要将 finally 语句置于右大括号所在的同一行。
默认选项值 true

代码示例:

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

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

csharp_new_line_before_members_in_object_initializers

属性 价值 说明
选项名称 csharp_new_line_before_members_in_object_initializers
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 要求将对象初始值设定项的成员置于单独的行上
false 要求将对象初始值设定项的成员置于同一行上
默认选项值 true

代码示例:

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

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

csharp_new_line_before_members_in_anonymous_types

属性 价值 说明
选项名称 csharp_new_line_before_members_in_anonymous_types
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 要求将匿名类型的成员置于单独的行上
false 要求将匿名类型的成员置于同一行上
默认选项值 true

代码示例:

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

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

csharp_new_line_between_query_expression_clauses

Property 价值 说明
选项名称 csharp_new_line_between_query_expression_clauses
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 要求将查询表达式子句的元素置于单独的行上
false 要求将查询表达式子句的元素置于同一行上
默认选项值 true

代码示例:

// 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 文件示例:

#  CSharp formatting rules:
[*.cs]
csharp_indent_case_contents = true
csharp_indent_switch_labels = true
csharp_indent_labels = flush_left
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents_when_block = true

csharp_indent_case_contents

属性 价值 说明
选项名称 csharp_indent_case_contents
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 缩进 switch case 内容
false 不缩进 switch case 内容
默认选项值 true

代码示例:

// 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_labels

属性 价值 说明
选项名称 csharp_indent_switch_labels
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 缩进 switch 标签
false 不缩进 switch 标签
默认选项值 true

代码示例:

// 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_labels

属性 价值 说明
选项名称 csharp_indent_labels
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 flush_left 标签置于最左侧的列
one_less_than_current 将标签置于比当前上下文少一个缩进的位置
no_change 将标签置于与当前上下文相同的缩进位置
默认选项值 one_less_than_current

代码示例:

// 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(...);
    }
}

csharp_indent_block_contents

Property 价值 说明
选项名称 csharp_indent_block_contents
适用的语言 C#
选项值 true 缩进程序块内容。
false 不缩进程序块内容。
默认选项值 true

代码示例:

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

// csharp_indent_block_contents = false
static void Hello()
{
Console.WriteLine("Hello");
}

csharp_indent_braces

Property 价值 说明
选项名称 csharp_indent_braces
适用的语言 C#
选项值 true 缩进大括号。
false 不缩进大括号。
默认选项值 false

代码示例:

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

// csharp_indent_braces = false
static void Hello()
{
    Console.WriteLine("Hello");
}

csharp_indent_case_contents_when_block

Property 价值 说明
选项名称 csharp_indent_case_contents_when_block
适用的语言 C#
选项值 true 如果它是程序块,则对 switch 语句中的 case 代码块缩进语句列表和大括号。
false 如果它是程序块,则不对 switch 语句中的 case 代码块缩进语句列表和大括号。
默认选项值 true

代码示例:

// csharp_indent_case_contents_when_block = true
case 0:
    {
        Console.WriteLine("Hello");
        break;
    }

// csharp_indent_case_contents_when_block = false
case 0:
{
    Console.WriteLine("Hello");
    break;
}

间距选项

这些格式设置选项涉及使用空格字符来设置代码格式。

.editorconfig 文件示例:

#  CSharp formatting rules:
[*.cs]
csharp_space_after_cast = true
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_between_parentheses = control_flow_statements, type_casts
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_around_binary_operators = before_and_after
csharp_space_between_method_declaration_parameter_list_parentheses = true
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = true
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_after_comma = true
csharp_space_before_comma = false
csharp_space_after_dot = false
csharp_space_before_dot = false
csharp_space_after_semicolon_in_for_statement = true
csharp_space_before_semicolon_in_for_statement = false
csharp_space_around_declaration_statements = false
csharp_space_before_open_square_brackets = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_square_brackets = false

csharp_space_after_cast

属性 价值 说明
选项名称 csharp_space_after_cast
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在强制转换和值之间放置空格字符
false 删除强制转换和值之间的空格
默认选项值 false

代码示例:

// 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_statements

Property 价值 说明
选项名称 csharp_space_after_keywords_in_control_flow_statements
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在控制流语句(如 for 循环)中的关键字后放置空格字符
false 删除控制流语句(如 for 循环)中的关键字后的空格
默认选项值 true

代码示例:

// 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_parentheses

Property 价值 说明
选项名称 csharp_space_between_parentheses
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 control_flow_statements 在控制流语句的括号之间放置空格
expressions 在表达式的括号之间放置空格
type_casts 在类型转换中的括号之间放置空格
false(或任何其他值) 从不在括号之间添加空格

如果省略此规则或使用 control_flow_statementsexpressionstype_casts 以外的值,则不会应用该设置。

代码示例:

// 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;

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

csharp_space_before_colon_in_inheritance_clause

属性 价值 说明
选项名称 csharp_space_before_colon_in_inheritance_clause
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在类型声明中的基或接口冒号前放置空格字符
false 删除类型声明中基或接口冒号前的空格
默认选项值 true

代码示例:

// csharp_space_before_colon_in_inheritance_clause = true
interface I
{

}

class C : I
{

}

// csharp_space_before_colon_in_inheritance_clause = false
interface I
{

}

class C: I
{

}

csharp_space_after_colon_in_inheritance_clause

属性 价值 说明
选项名称 csharp_space_after_colon_in_inheritance_clause
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在类型声明中的基或接口冒号后放置空格字符
false 删除类型声明中基或接口冒号后的空格
默认选项值 true

代码示例:

// csharp_space_after_colon_in_inheritance_clause = true
interface I
{

}

class C : I
{

}

// csharp_space_after_colon_in_inheritance_clause = false
interface I
{

}

class C :I
{

}

csharp_space_around_binary_operators

属性 价值 说明
选项名称 csharp_space_around_binary_operators
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 before_and_after 在二元运算符前后插入空格
none 删除二元运算符前后的空格
ignore 忽略二元运算符前后的空格
默认选项值 before_and_after

代码示例:

// csharp_space_around_binary_operators = before_and_after
return x * (x - y);

// csharp_space_around_binary_operators = none
return x*(x-y);

// csharp_space_around_binary_operators = ignore
return x  *  (x-y);

csharp_space_between_method_declaration_parameter_list_parentheses

Property 价值 说明
选项名称 csharp_space_between_method_declaration_parameter_list_parentheses
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在方法声明参数列表的左括号之后和右括号之前放置空格字符
false 删除方法声明参数列表的左括号之后和右括号之前的空格字符
默认选项值 false

代码示例:

// 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_declaration_empty_parameter_list_parentheses

Property 价值 说明
选项名称 csharp_space_between_method_declaration_empty_parameter_list_parentheses
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在方法声明的空参数列表括号内插入空格
false 删除方法声明的空参数列表括号内的空格
默认选项值 false

代码示例:

// csharp_space_between_method_declaration_empty_parameter_list_parentheses = true
void Goo( )
{
    Goo(1);
}

void Goo(int x)
{
    Goo();
}

// csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
void Goo()
{
    Goo(1);
}

void Goo(int x)
{
    Goo();
}

csharp_space_between_method_declaration_name_and_open_parenthesis

Property 价值 说明
选项名称 csharp_space_between_method_declaration_name_and_open_parenthesis
适用的语言 C#
选项值 true 在方法声明中方法名称和左括号之间放置空格字符
false 删除方法声明中方法名称和左括号之间的空格字符
默认选项值 false

代码示例:

// csharp_space_between_method_declaration_name_and_open_parenthesis = true
void M () { }

// csharp_space_between_method_declaration_name_and_open_parenthesis = false
void M() { }

csharp_space_between_method_call_parameter_list_parentheses

Property 价值 说明
选项名称 csharp_space_between_method_call_parameter_list_parentheses
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在方法调用的左括号之后和右括号之前放置空格字符
false 删除方法调用的左括号之后和右括号之前的空格字符
默认选项值 false

代码示例:

// 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_method_call_empty_parameter_list_parentheses

Property 价值 说明
选项名称 csharp_space_between_method_call_empty_parameter_list_parentheses
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在空参数列表的括号中插入空格
false 删除空参数列表括号内的空格
默认选项值 false

代码示例:

// csharp_space_between_method_call_empty_parameter_list_parentheses = true
void Goo()
{
    Goo(1);
}

void Goo(int x)
{
    Goo( );
}

// csharp_space_between_method_call_empty_parameter_list_parentheses = false
void Goo()
{
    Goo(1);
}

void Goo(int x)
{
    Goo();
}

csharp_space_between_method_call_name_and_opening_parenthesis

Property 价值 说明
选项名称 csharp_space_between_method_call_name_and_opening_parenthesis
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 在方法调用名称和左括号之间插入空格
false 删除方法调用名称和左括号之间的空格
默认选项值 false

代码示例:

// csharp_space_between_method_call_name_and_opening_parenthesis = true
void Goo()
{
    Goo (1);
}

void Goo(int x)
{
    Goo ();
}

// csharp_space_between_method_call_name_and_opening_parenthesis = false
void Goo()
{
    Goo(1);
}

void Goo(int x)
{
    Goo();
}

csharp_space_after_comma

Property 价值 说明
选项名称 csharp_space_after_comma
适用的语言 C#
选项值 true 在逗号后面插入空格
false 删除逗号后面的空格
默认选项值 true

代码示例:

// csharp_space_after_comma = true
int[] x = new int[] { 1, 2, 3, 4, 5 };

// csharp_space_after_comma = false
int[] x = new int[] { 1,2,3,4,5 };

csharp_space_before_comma

Property 价值 说明
选项名称 csharp_space_before_comma
适用的语言 C#
选项值 true 在逗号前面插入空格
false 删除逗号前面的空格
默认选项值 false

代码示例:

// csharp_space_before_comma = true
int[] x = new int[] { 1 , 2 , 3 , 4 , 5 };

// csharp_space_before_comma = false
int[] x = new int[] { 1, 2, 3, 4, 5 };

csharp_space_after_dot

Property 价值 说明
选项名称 csharp_space_after_dot
适用的语言 C#
选项值 true 在点号后面插入空格
false 删除点号后面的空格
默认选项值 false

代码示例:

// csharp_space_after_dot = true
this. Goo();

// csharp_space_after_dot = false
this.Goo();

csharp_space_before_dot

Property 价值 说明
选项名称 csharp_space_before_dot
适用的语言 C#
选项值 true 在点号前面插入空格
false 删除点号前面的空格
默认选项值 false

代码示例:

// csharp_space_before_dot = true
this .Goo();

// csharp_space_before_dot = false
this.Goo();

csharp_space_after_semicolon_in_for_statement

Property 价值 说明
选项名称 csharp_space_after_semicolon_in_for_statement
适用的语言 C#
选项值 true for 语句中的每个分号后面插入空格
false 删除 for 语句中每个分号后面的空格
默认选项值 true

代码示例:

// csharp_space_after_semicolon_in_for_statement = true
for (int i = 0; i < x.Length; i++)

// csharp_space_after_semicolon_in_for_statement = false
for (int i = 0;i < x.Length;i++)

csharp_space_before_semicolon_in_for_statement

Property 价值 说明
选项名称 csharp_space_before_semicolon_in_for_statement
适用的语言 C#
选项值 true for 语句中的每个分号前插入空格
false 删除 for 语句中每个分号前的空格
默认选项值 false

代码示例:

// csharp_space_before_semicolon_in_for_statement = true
for (int i = 0 ; i < x.Length ; i++)

// csharp_space_before_semicolon_in_for_statement = false
for (int i = 0; i < x.Length; i++)

csharp_space_around_declaration_statements

Property 价值 说明
选项名称 csharp_space_around_declaration_statements
适用的语言 C#
选项值 ignore 不删除声明语句中多余的空格字符
false 删除声明语句中多余的空格字符
默认选项值 false

代码示例:

// csharp_space_around_declaration_statements = ignore
int    x    =    0   ;

// csharp_space_around_declaration_statements = false
int x = 0;

csharp_space_before_open_square_brackets

Property 价值 说明
选项名称 csharp_space_before_open_square_brackets
适用的语言 C#
选项值 true 在左方括号 [ 前插入空格
false 删除左方括号 [ 前的空格
默认选项值 false

代码示例:

// csharp_space_before_open_square_brackets = true
int [] numbers = new int [] { 1, 2, 3, 4, 5 };

// csharp_space_before_open_square_brackets = false
int[] numbers = new int[] { 1, 2, 3, 4, 5 };

csharp_space_between_empty_square_brackets

Property 价值 说明
选项名称 csharp_space_between_empty_square_brackets
适用的语言 C#
选项值 true 在空方括号 [ ] 之间插入空格
false 删除空方括号 [] 之间的空格
默认选项值 false

代码示例:

// csharp_space_between_empty_square_brackets = true
int[ ] numbers = new int[ ] { 1, 2, 3, 4, 5 };

// csharp_space_between_empty_square_brackets = false
int[] numbers = new int[] { 1, 2, 3, 4, 5 };

csharp_space_between_square_brackets

Property 价值 说明
选项名称 csharp_space_between_square_brackets
适用的语言 C#
选项值 true 在非空方括号 [ 0 ] 中插入空格字符
false 删除非空方括号 [0] 中的空格字符
默认选项值 false

代码示例:

// csharp_space_between_square_brackets = true
int index = numbers[ 0 ];

// csharp_space_between_square_brackets = false
int index = numbers[0];

换行选项

“换行”格式设置选项涉及对语句和代码块使用单个行与单独的行。

.editorconfig 文件示例:

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

csharp_preserve_single_line_statements

Property 价值 说明
选项名称 csharp_preserve_single_line_statements
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 将语句和成员声明保留在同一行上
false 将语句和成员声明保留在不同行上
默认选项值 true

代码示例:

//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_blocks

Property 价值 说明
选项名称 csharp_preserve_single_line_blocks
适用的语言 C#
引入的版本 Visual Studio 2017
选项值 true 将代码块保留在单个行上
false 将代码块保留在单独的行上
默认选项值 true

代码示例:

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

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

请参阅