如何防止在Visual Studio中在同一行上声明的多个变量的自动间隔?

时间:2018-06-17 19:30:59

标签: c# visual-studio formatting spacing

我希望能够声明这样的变量:

public static Rectangle CreateFromArray(this Rectangle self,int[] info)
{
    self.X = info[0]; self.Y = info[1];
    self.Width = info[2]; self.Height = info[3];
    return self;
}

但VS将其格式化为:

{{1}}

我尝试了代码风格中的所有间距选项 - >格式化并且没有找到任何有用的工作。

1 个答案:

答案 0 :(得分:1)

由于Rectangle是结构,因此是值类型,因此此扩展方法将无法按预期工作。这些方法获得原始矩形的副本,并且只会更改此本地副本。您作为参数传递的原始矩形将保持不变!

改为返回一个新的矩形。

public static Rectangle RectanlgeFromArray(int[] info)
{
    return new Rectangle(info[0], info[1], info[2], info[3]);
}

注意:从C#7.2开始,您可以使用ref-Extension方法

public static Rectangle CreateFromArray(this ref Rectangle self, int[] info)
...

但由于原始矩形被完全覆盖,因此将其传递给方法是没有意义的,除非您将返回类型更改为void并将其更改为原位:

public static void FillFromArray(this ref Rectangle self, int[] info)
{
    self.X = info[0]; self.Y = info[1];
    self.Width = info[2]; self.Height = info[3];
}

用法:

rect.FillFromArray(new int[] { 1, 2, 3, 4 });