让我说我有这个
int x = 0;
int y = 0;
int z = 0;
const int v = 50;
//change x,y,z
x += v;
y += v;
z += v;
很好,但有没有更短的方法来避免这3行代码(+=
)并且只有一行?我只是问自己,因为我必须经常为这些变量添加一些常量,然后我必须总是添加+3行(或者如果我有xyz +变量则更多)。
答案 0 :(得分:8)
如果这种情况经常发生,您可能希望将它们放在一个类中。例如,如果这些是虚拟页面中的位置:
class PageLoc
{
public int Header { get; set; }
public int Body { get; set; }
public int Footer { get; set; }
void MoveAll(int distance) {
Header += distance;
Body += distance;
Footer += distance;
}
}
这样,您可以单独或集体更改其值。
答案 1 :(得分:3)
您可以定义一个方法来增加所有三个变量并通过引用传递变量:
Add(ref x, ref y, ref z, 50);
与
void Add(ref int x, ref int y, ref int z, int v)
{
x += v;
y += v;
z += v;
}
答案 2 :(得分:1)
将x,y,z包装到一个类中并编写一个方法来向所有三个方法添加一个常量:
class XYZ
{
public void Add (int v) { x += v; y += v; z += v; }
int x,y,x;
}
上面使用的一些代码:
void F ()
{
XYZ xyz;
xyz.Add (3);
}
当然,您可以通过重载+ =运算符以及其他运算符来改进上述内容。实际上,您已经创建了一个向量,并且已经有可用的库(可能在DirectX中)。
答案 3 :(得分:1)
z += 0 * (y += 0 * (x += v) + v) + v;
Tadah:D
但我不建议使用它!当然更好的方法是创建一个方法来做到这一点。这也只会给你一行(+方法声明)。