当编辑非常长的代码块时(无论如何它肯定会被重构,但这超出了这个问题的范围),我经常渴望能够折叠语句块,就像可以折叠功能块一样。也就是说,如果在括号中包含的所有内容的代码轮廓上出现减号图标,那将会很棒。它似乎出现在函数,类,区域,名称空间和使用中,但不适用于条件或迭代块。如果我可以崩溃像ifs,switch,foreaches这样的东西,那将是太棒了!
谷歌搜索了一下,我发现显然在VS中的C ++概述允许这样但在VS中的C#概述却没有。我真的不明白为什么。如果选择C#格式化,即使是notepad ++也会崩溃,所以我不明白为什么Visual Studio没有。
有没有人知道会启用此行为的VS2008加载项?或者某种隐藏的设置?
编辑添加:插入区域当然是一个选项,它确实已经发生在我身上,但坦率地说,我不应该把东西包裹在已经包裹在括号中的区域......如果我要去编辑现有的代码,我只是重构它,以便更好地分离关注点。 (用新方法而不是区域“包裹”;)
答案 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中找到了这个,发现它非常有用。即使你用{.....}
在代码周围加上简单的括号,它也能工作分享后我发现其他人也提到了这个链接。我的投票也是这个工具。
答案 9 :(得分:0)
在VS2017中,您可以突出显示一段代码,右键单击,概述&gt;隐藏选择。这将折叠代码并为突出显示的部分提供切换。
答案 10 :(得分:0)
在Visual Studio 2019中,如果要折叠catch
和finally
中的括号,请折叠switch
,case
,default
,折叠多行comments
等
尝试使用C# outline 2019
答案 11 :(得分:-2)
#region,#endregion是明智的选择。