如何在删除{}括号时阻止VisualStudio扩展所有内容

Tar*_*rec 8 c# refactoring visual-studio

我前几天问了这个问题并没有得到答案,所以我会再试一次.

我喜欢通过折叠我目前不使用的方法,注释和xml摘要来保持我的代码.但是,每次我在方法,循环,switch语句或代码的任何部分(任何包含{}支撑)中编辑一些大括号时,下面的所有内容都会在1秒后扩展.一切都向下展开,直到当前文件(或区域,如果编辑的代码位于其中)结束.

我不能再忍受了我已经厌倦了一直使用Ctrl+ M+ O然后再次重新找到编辑的字段.VS2010有什么选项或扩展名,可以解决我的问题吗?

更新 我开始意识到没有办法解决问题.但是我也可以接受一个修改过的问题的答案:是否有一种方法或工具可以让我自动删除{}支持只包含1条指令的对?对我的问题来说,这是一个可以接受的解决方法.

dev*_*avx 5

如果我明白你需要什么,那么你会问how to stop the code below the line that I am editing from automatically expanding.我想告诉你,无论是官方来源还是任何东西都没有解决方案。代码崩溃了 Visual Studio 等理想代码编辑器的功能。

让我解释一下为什么会发生这种情况以及如何防止它。首先让我解释一下代码崩溃工作的基本条件。理想的代码编辑器使用词法分析器和解析器来支持语言,解析器使用正则表达式来匹配特定于语言的语言由编码器或某人输入的语法,在此序列代码编辑器中存储特定符号(如;{ and }、 )的所有位置"

为了使代码折叠有效地工作,在正在编辑的代码中必须以精确的顺​​序指定相同数量的这些符号,只要源代码中存在与语言特定语法不匹配的内容,解析器标志就会报告编辑和格式设置这个错误的引擎。

回到你的问题,让我们谈谈你面临的问题,为了更好地理解它,让我们考虑一个简单的代码块;

到目前为止,代码折叠工作得很好

并考虑下面还有更多函数AddNumbers也被折叠。现在如果我理解你的意思,那么你说如果I editMultiplyNumbers and remove its starting curly brace{`,则这一点下面的所有代码都会自动展开。

起始大括号位置错误

如果是这种情况,那么问题是因为解析器尝试匹配语言语法并搜索在终止大括号中找到的低于此点的任何终止大AddNumbers's括号。

更新 :

一句话,这个问题没有解决方案,这是因为 Visual Studio 执行实时解析,这就是它实时显示错误的方式。实际上这不是一个问题,这就是为什么这个问题从未被报告过,因为有官方来源没有任何可用信息。但是,您可以通过稍微改变编码习惯来防止这种情况,例如当您创建函数时假设 SomeFunction(int a,int b) ,尝试首先完成函数的外侧,如下所示;

private void SomeFunction(int a,int b)
{
//Write code later.
}
Run Code Online (Sandbox Code Playgroud)

首先创建上面的函数大纲,然后在其中编写一些代码,如下所示;

private void SomeFunction(int a,int b)
{
int z=a+b;
Console.WriteLine(z);

int x=a*b;
Console.WriteLine(x);

int p=a/b;
Console.WriteLine(p);

int q=a-b;
Console.WriteLine(q);
}
Run Code Online (Sandbox Code Playgroud)

接下来考虑你正在写一个if statement,首先像这样完成外侧;

if(//We'll define condition later)
{
//Write function body later.
}
Run Code Online (Sandbox Code Playgroud)

如果您在 Visual Studio 中使用过代码片段,那么您可能已经注意到 Visual Studio 首先生成片段的外侧,然后将插入符号放置到第一个参数。

所以,这些是一些指导方针,可以防止这个问题。

现在转向解决方案,to prevent this situation when you create a function try to first place its { and } braces before writing any code in it.

希望这可以防止您面临的问题。如果您还面临任何其他问题,请告诉我。

  • @Tarec 作为最后一句话我想告诉你我在网上搜索了很多次官方资源,但不幸的是没有什么可以做的,唯一的解决方法是改变你的代码编辑习惯。看到有超过数百万其中大多数使用 Visual Studio 的程序员,但即使在 Visual Studio 发布一年后,这个问题也从未报告给它的官方所有者。这仅意味着一件事,这不是一个严重的问题,您可以通过以下方式克服它稍微改变一下你的代码编辑习惯。 (2认同)
  • 我来这里是为了寻找这个同样令人烦恼的问题的答案,但读完本文后,我发现解决方案既不可能也不理想。如果您曾经使用过旧版本的 Eclipse,您就会知道崩溃方面做得不好意味着什么。VS 从来没有弄乱或折叠错误的部分,我认为这部分是由于这种行为:出错时展开全部。我同意这很烦人,但我正在努力认识到这一点并稍微调整我的方法。我希望他们有一种方法可以折叠所有内容,然后像其他编辑器一样自动展开到当前光标位置。那好吧 :) (2认同)

Sin*_*atr 1

我正在将自己折叠用于包含本地化文本的静态类,并且能够hide/show东西非常好,类似于TreeView节点的处理方式:

静态字符串

我从来没有遇到过所描述的问题或对遇到的问题感到恼火VS

但是,当您编辑代码时,我认为这种行为有点太多了Intellisense(正如另一个答案中已经描述的那样)。也许你应该改变你的“思维方式”?

看一看:

会员名单

您可以使用此特殊窗口在成员之间快速导航或对其进行简要概述,同时展开所有代码。

我见过一些人#region很喜欢。但是,您可以通过使用partial单个类并将其拆分为多个部分来实现相同的目标(如果不是在所有方面都更好的话)。

ps:最后一个问题是,为什么不先选择需要删除的内容,然后按Delete?或者这个工具能为你做什么?自动检查来源、检测并删除?如果您是一名程序员,那么制作能够做到这一点的软件不应该比在这里写下您的问题更重要=D