Tar*_*rec 8 c# refactoring visual-studio
我前几天问了这个问题并没有得到答案,所以我会再试一次.
我喜欢通过折叠我目前不使用的方法,注释和xml摘要来保持我的代码.但是,每次我在方法,循环,switch语句或代码的任何部分(任何包含{或}支撑)中编辑一些大括号时,下面的所有内容都会在1秒后扩展.一切都向下展开,直到当前文件(或区域,如果编辑的代码位于其中)结束.
我不能再忍受了我已经厌倦了一直使用Ctrl+ M+ O然后再次重新找到编辑的字段.VS2010有什么选项或扩展名,可以解决我的问题吗?
更新
我开始意识到没有办法解决问题.但是我也可以接受一个修改过的问题的答案:是否有一种方法或工具可以让我自动删除{和}支持只包含1条指令的对?对我的问题来说,这是一个可以接受的解决方法.
如果我明白你需要什么,那么你会问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.
希望这可以防止您面临的问题。如果您还面临任何其他问题,请告诉我。
我正在将自己折叠用于包含本地化文本的静态类,并且能够hide/show东西非常好,类似于TreeView节点的处理方式:

我从来没有遇到过所描述的问题或对遇到的问题感到恼火VS。
但是,当您编辑代码时,我认为这种行为有点太多了Intellisense(正如另一个答案中已经描述的那样)。也许你应该改变你的“思维方式”?
看一看:

您可以使用此特殊窗口在成员之间快速导航或对其进行简要概述,同时展开所有代码。
我见过一些人#region很喜欢。但是,您可以通过使用partial单个类并将其拆分为多个部分来实现相同的目标(如果不是在所有方面都更好的话)。
ps:最后一个问题是,为什么不先选择需要删除的内容,然后按Delete?或者这个工具能为你做什么?自动检查来源、检测并删除?如果您是一名程序员,那么制作能够做到这一点的软件不应该比在这里写下您的问题更重要=D
| 归档时间: |
|
| 查看次数: |
1999 次 |
| 最近记录: |