【问题标题】:Why can't Visual Studio 2010 C# Express format nested code correctly?为什么 Visual Studio 2010 C# Express 不能正确格式化嵌套代码?
【发布时间】:2013-01-15 19:48:05
【问题描述】:

考虑这段代码...

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 不能正确格式化此类嵌套代码? 有没有其他人经历过这个? 如有必要,我可以提供我的格式首选项。 提前致谢! :)

【问题讨论】:

  • 对我也不起作用(VS 2010 Pro)。但是,如果您在同一行有 new Class1[] { new Class1(a,b,c), new Class1(a,b,c) },它就可以工作。
  • 我有点想在 VS2012 中尝试,你可以称我为懒惰,但你能添加你的类和函数定义,以便我可以粘贴它并查看它的格式吗?
  • 老实说,我看不出您要解决的问题。
  • 查看格式化文档前后的空格。如有必要,请将代码复制并粘贴到记事本中以查看差异。
  • @Gray——为了这个问题,这些只是通用类和方法。 (我不想发布我的真实代码,但它基本上是相同的结构。)这是 Class1 的定义; Class2 和 Create 类似。类 Class1 { int A, B, C;公共类 1(int a,int b,int c){ A = a;乙=乙; C = c; } }(抱歉——cmets 编辑器在同一行上运行)

标签: c# visual-studio formatting format code-formatting


【解决方案1】:

@tvwxyz:我可以用 Ctrl+K, D 重现这个问题。

但是,有趣的是,如果我启用“在 } 上自动格式化已完成的块”,当我关闭该功能时它可以正常工作(按预期进行)。

工具->选项->文本编辑器->C#->格式化->常规-> 在 }

上自动格式化完成的块

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 2018-05-01
    • 2014-11-13
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多