Visual Studio C#语句折叠

时间:2008-11-12 21:20:35

标签: c# visual-studio-2008 ide text-editor outlining

当编辑非常长的代码块时(无论如何它肯定会被重构,但这超出了这个问题的范围),我经常渴望能够折叠语句块,就像可以折叠功能块一样。也就是说,如果在括号中包含的所有内容的代码轮廓上出现减号图标,那将会很棒。它似乎出现在函数,类,区域,名称空间和使用中,但不适用于条件或迭代块。如果我可以崩溃像ifs,switch,foreaches这样的东西,那将是太棒了!

谷歌搜索了一下,我发现显然在VS中的C ++概述允许这样但在VS中的C#概述却没有。我真的不明白为什么。如果选择C#格式化,即使是notepad ++也会崩溃,所以我不明白为什么Visual Studio没有。

有没有人知道会启用此行为的VS2008加载项?或者某种隐藏的设置?

编辑添加:插入区域当然是一个选项,它确实已经发生在我身上,但坦率地说,我不应该把东西包裹在已经包裹在括号中的区域......如果我要去编辑现有的代码,我只是重构它,以便更好地分离关注点。 (用新方法而不是区域“包裹”;)

12 个答案:

答案 0 :(得分:265)

从Visual Studio 2017开始,语句折叠是内置的。

从VS 2010版本开始,有几个扩展程序可以为2017年之前的VS版本执行此任务:

最后一个扩展仅支持VS 2015和VS 2017,但它是最强大的扩展 它支持折叠块内的语法着色,它更具容错性和优化性。

  

如果在使用浏览器下载扩展后似乎没有安装扩展程序,请尝试使用内置的Visual Studio扩展程序管理器。

答案 1 :(得分:21)

我不知道加载项,但你提到了区域,我认为做这样的事情并没有错...

foreach (Item i in Items)
{
  #region something big happening here
  ...
  #endregion

  #region something big happening here too
  ...
  #endregion

  #region something big happening here also
  ...
  #endregion
}
编辑:回答问题的编辑:你是对的,到处都是一堆地区并不理想,重构可能是要走的路。但似乎你正在寻找能够为你“组织”代码的神奇东西,我认为不存在。

答案 2 :(得分:19)

您可以在visual studio中折叠特定的文本块,但必须关闭自动大纲。

右键单击代码窗口并选择(概述|停止大纲)

然后,选择一些文本,右键单击并选择(概述|隐藏选择)

当您再次启用自动大纲时,您的自定义“区域”将不再崩溃。

答案 3 :(得分:3)

Visual Studio 2008支持函数内部的区域,只要您将它们保持在相同的代码层次结构级别

即可
#region Won't work
for(int i = 0; i<Count; i++)
{
//do something
#endregion
}

for(int i=0; i<Count; i++)
{
#region Works fine
//do lots of stuff
#endregion
}

答案 4 :(得分:3)

让我说一些不同之处:按(ctrl+m,ctrl+h)或编辑&gt;概述&gt;隐藏选择 它非常有用。

答案 5 :(得分:2)

此功能已添加到Visual Studio 2010的C#编辑器中。我找不到源验证它实际上已经放入,但我记得在Dev 10团队成员博客中的一个谈论自Beta 1之后的变化。 As a consolation, here's one Microsoft comment suggesting they wanted to add it.

答案 6 :(得分:0)

我将在此处补充说,在VS 2010中,Microsoft已使用Managed Extensibility Framework(MEF)添加了WPF adorner功能,这将允许我们扩展源代码编辑器以更好的方式组织它们,使其更具可读性和可访问性

例如,Scott Gu demoed at PDC 2008

的摘要注释可视化工具

所以期待开发人员有一个更美好的明天:)

答案 7 :(得分:0)

Coderush将为您概述所有代码块。不确定它是否允许你扩展/折叠块,但概述是下一个最好的事情。我使用resharper而不是coderush,据我所知,它不会提供块崩溃:(

答案 8 :(得分:0)

我在Visual Studio 2013中找到了这个,发现它非常有用。即使你用{.....}

在代码周围加上简单的括号,它也能工作

分享后我发现其他人也提到了这个链接。我的投票也是这个工具。

C# Outlining Tool for Visual Studio 2013

答案 9 :(得分:0)

在VS2017中,您可以突出显示一段代码,右键单击,概述&gt;隐藏选择。这将折叠代码并为突出显示的部分提供切换。

答案 10 :(得分:0)

在Visual Studio 2019中,如果要折叠catchfinally中的括号,请折叠switchcasedefault,折叠多行comments

尝试使用C# outline 2019

答案 11 :(得分:-2)

#region,#endregion是明智的选择。