3

考虑这段代码...

Create(x,y,z,
null, null, null,
new Class1[     ] {
    new Class1(a,b,c),
    new Class1(a,b,c)
},
new Class2[] {
    new Class2(d,e,f    )
},
true);

请注意参数逗号后缺少空格,以及 Class1 数组定义和 Class2 调用中的额外空格。

如果我格式化我的文档 -- Ctrl+E、D 或 Ctrl+K、D -- 代码被格式化为这个......

Create(x, y, z,
null, null, null,
new Class1[] {
    new Class1(a,b,c),
    new Class1(a,b,c)
},
new Class2[] {
    new Class2(d,e,f    )
},
true);

请注意,“外部”代码中的参数逗号已正确格式化为空格(根据我的偏好),并且已从 Class1 数组定义中删除了额外的空格(同样,我的偏好)。但是,“内部”代码中的参数逗号格式不正确,并且额外的间距保留在 Class2 调用中。

代码绝对没有问题——它编译和运行没有错误。

每次我使用大括号创建嵌套的复杂调用时都会发生这种情况。我想我可以通过将代码全部分开并使用临时变量来使我的代码更长更复杂,但这似乎有点矫枉过正。

为什么 Visual Studio 2010 C# Express 不能正确格式化这样的嵌套代码?有没有其他人经历过这个?如有必要,我可以提供我的格式首选项。提前致谢!:)

4

1 回答 1

1

@tvwxyz: I could reproduce this issue with Ctrl+K, D.

But, interestingly if I enable "Automatically format completed block on }" it works fine (gets intended as expected) when I close the function.

Tools -> Options -> Text Editor-> C#-> Formatting -> General -> Automatically format completed block on }

于 2013-03-13T04:38:15.617 回答