如果我了解您的需求,那么您要问的是,how to stop the code below the line that I am editing from automatically expanding.
我想告诉您,官方来源或任何东西都没有解决方案。代码折叠了 Visual Studio 等理想代码编辑器的功能。
让我解释一下为什么会发生这种情况以及如何防止它。首先让我解释一下代码崩溃工作的基本条件。理想的代码编辑器使用 Lexers 和 Parsers 来支持语言,解析器使用正则表达式来匹配特定语言由 Coder 或某人输入的语法,在此序列代码编辑器中存储特定符号(如;
, { and }
, "
.
为了使代码折叠有效地工作,必须在正在编辑的代码中以确切的顺序指定相等数量的这些符号,只要源代码中的某些内容与特定于语言的语法不匹配,解析器标志就会报告编辑和格式这个错误的引擎。
回到你的问题,让我们谈谈你面临的问题,为了更好地理解它,让我们考虑一个简单的代码块;
并考虑下面还有更多的功能AddNumbers
也被折叠了。现在如果我理解你,那么你说如果I edit
MultiplyNumbers 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.
}
首先像上面一样创建函数大纲,然后在其中编写一些代码,如下所示;
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);
}
接下来考虑你正在写一个if statement
,首先像这样完成外侧;
if(//We'll define condition later)
{
//Write function body later.
}
如果您在 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.
希望这可以防止您面临的问题。如果您还有其他问题,请告诉我。