1

私がこれを持っているとしましょう

int x = 0;
int y = 0;
int z = 0;
const int v = 50;

//change x,y,z
x += v;
y += v;
z += v;

それは問題ありませんが、この 3 行のコード ( を使用+=) を回避し、1 行だけにするより短い方法はありますか? これらの変数に const を頻繁に追加する必要があり、常に +3 行 (xyz+ 変数がある場合はそれ以上) を追加する必要があるため、自問自答しています。

4

4 に答える 4

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;
    }
}

そうすれば、それらの値を個別に、またはまとめて変更できます。

于 2012-07-25T14:17:23.430 に答える
3

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;
}
于 2012-07-25T14:20:55.507 に答える
1
z += 0 * (y += 0 * (x += v) + v) + v;

タダ:D

しかし、これを使用することはお勧めしません!もちろん、より良い方法はそれを行うメソッドを作成することです。また、1行だけ(+メソッド宣言)になります。

于 2012-07-25T14:30:19.363 に答える
1

x、y、z をクラスにラップし、3 つすべてに定数を追加するメソッドを記述します。

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 で)。

于 2012-07-25T14:18:24.580 に答える