我希望能够声明这样的变量:
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}}
我尝试了代码风格中的所有间距选项 - >格式化并且没有找到任何有用的工作。
答案 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 });