可以说我有这个
int x = 0;
int y = 0;
int z = 0;
const int v = 50;
//change x,y,z
x += v;
y += v;
z += v;
很好,但是有没有更短的方法来避免这 3 行代码(带有+=
)并且只有一个?我只是问自己,因为我必须经常向这些变量添加一些 const,然后我必须总是添加 +3 行(或者如果我有 xyz+ 变量则更多)。
如果这种情况经常发生,您可能希望将这些放在一个类中。例如,如果这些是虚拟页面中的位置:
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;
}
}
这样,您可以单独或集体更改它们的值。
您可以定义一个方法来递增所有三个变量并通过引用传递变量:
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;
}
将 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 中)。
z += 0 * (y += 0 * (x += v) + v) + v;
塔达:D
但是我不推荐使用这个!当然,更好的方法是创建一个方法来做到这一点。那也只会给你一行(+一个方法声明)。