解决 使代码重新格式化自动吗?

PickyBiker

新成员
已加入
2020年5月15日
留言内容
4
编程经验
Beginner
经过多年使用VB.net,我非常喜欢每行返回时的自动重新格式化功能。现在,我正在学习C#,我发现可以使用ctrl + k + d重新格式化代码,但是似乎无法找到一种在每次返回后自动格式化代码的方法。

我怎样才能做到这一点?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,499
地点
悉尼,澳大利亚
编程经验
10+
在这方面,C#代码编辑器与VB代码编辑器的工作方式不同。我使用ReSharper,所以我通常不知道VS正在执行什么操作,而ReSharper却执行了什么操作,但是,如果我没有记错的话,C#代码编辑器将在键入分号时设置一行格式,而在键入结束符时将格式该格式支撑。如果未格式化行或块,例如因为您在中间进行了编辑,所以请尝试在分号或大括号的末尾键入内容。我认为您不必选择它,因为代码编辑器足够聪明,无法在这种情况下改写,但这可能是ReSharper而不是VS。
 

PickyBiker

新成员
已加入
2020年5月15日
留言内容
4
编程经验
Beginner
我发现它确实适用于块和分号,即使选中了该选项,它也不能返回。猜猜我只会接受它的工作方式。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
您能否向我们展示您输入然后按的示例"Return"?您期望的格式是什么?您目前看到什么格式(或缺少格式)?
 

PickyBiker

新成员
已加入
2020年5月15日
留言内容
4
编程经验
Beginner
在下面的代码中,Update的前两行已缩排。如果我转到platform.transform行的末尾并按回车键,它会换行,但格式不会改变。在VB中,该块将被重新格式化。

如果我转到Update子句中第一行的末尾并按回车键,则格式没有更改,只是换了一行。
如果我删除';'在第一行的末尾并再次键入,该行会重新格式化,但第二行仍会缩排。
如果我删除Update子句上的右括号并重新输入,则该块中的所有内容都会重新格式化。

实际上,我认为VB不会允许将第一两行放在首位。只要单击鼠标或返回鼠标左键,它就会被重新格式化。

猜想行为上的差异一定是有原因的。

C#:
using UnityEngine;
public class Tilt : MonoBehaviour
{
    public float xAngle, zAngle;
    private GameObject platform;

    void Update()
    {
     platform = GameObject.Find("Cube");
    float xAngle = Input.GetAxis("Vertical") * .25f;
        float zAngle = -Input.GetAxis("Horizontal") * .25f;
        platform.transform.Rotate(xAngle, 0, zAngle, Space.Self);
    }
}
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,499
地点
悉尼,澳大利亚
编程经验
10+
代码编辑器由不同的团队创建。 VB的目标人群更多地是针对初学者,因此试图使更多的事情变得容易。 C#的目标受众是经验丰富的开发人员,尤其是那些具有基于C语言的经验的开发人员。这些人更有可能想以自己的方式做事。

我不确定100%如何 退货时自动格式化 选项有效,但这是我刚刚尝试过的事情以及发生了什么。我输入了以下代码:
C#:
for(var i=0;
    i<10;
    i++)
{}
当我打 输入 在每一行的末尾,未应用任何格式。当我输入开始括号时,自动添加了结束括号,并且将插入号放置在括号之间,但未应用格式。当我打 输入,结果如下:
C#:
for (var i = 0;
     i < 10;
     i++)
{

}
如您所见,当我点击时应用了格式化 输入,然后将插入号放在括号之间的行上并缩进一个制表符。同样,我不确定ReSharper是否负责任何此类工作,但这很可能就是它们对退货格式化的含义。

还要注意的是,如果我键入右括号而不是 输入, 我懂了:
C#:
for (var i = 0;
     i < 10;
     i++)
{
}
插入符号放在右括号之后。
 
最佳 底部