0

私は次のような多くの変数を持っています

int foo1;
int foo2;
int foo3;
int foo4;

これで、var x = 0から3(4つの変数の場合)に移動するforループがあり、xを使用して次のような変数を呼び出したいと思います。

for(int x = 0; x < 4; x++)
{
    foo+x = bar;
}

そのため、x = 1の場合、変数foo1に値barが割り当てられます(x = 1の場合、foo + x = bar == foo1 = bar)。

C#でこれを行う方法はありますか、それとも別のアプローチを取る必要がありますか?

4

5 に答える 5

4

リフレクションを使用したい場合を除いて、これは不可能です。これは最善のアプローチではありません。何を達成しようとしているのかわからない場合、答えるのは少し難しいですが、変数を保持する配列を作成し、xをインデクサーとして使用して変数にアクセスすることができます。

for(int x = 0; x < 4; x++)
{
    fooarr[x] = bar;
}
于 2012-08-07T02:48:19.050 に答える
1

あなたの特定のケースで何が最善のアプローチであるかを判断するのは難しいですが、それはおそらく良いアプローチではありません。絶対に4つの変数が必要ですか、それとも4つの値だけが必要ですか。単純なリスト、配列、または辞書がその役割を果たします。

int[] array = new int[4];
List<int> list = new List<int>(4);
List<int, int> dictionary1 = new Dictionary<int, int>(4);
List<string, int> dictionary2 = new Dictionary<string, int>(4);

for(int x = 0; x < 4; x++)
{
    array[x] = bar;
    list[x] = bar;
    dictionary1.Add(x, bar);
    dictionary2.Add("foo" + x.ToString(), bar);
}
于 2012-08-07T02:50:08.420 に答える
1

あなたはこのようなことをすることができますか?

var listVariables = new Dictionary<string, int>
                    {
                        { "foo1", 1 },
                        { "foo2", 2 },
                        { "foo3", 3 },
                        { "foo4", 4 },
                    };

for (int x = 1; x <= 4; x++)
{
   listVariables["foo" + x] = bar;
}
于 2012-08-07T02:52:49.123 に答える
0

可能であれば、4つの整数を含む配列を使用する必要があります。あなたはそれを次のように宣言することができます:

int[] foos = new int[4];

次に、ループで次のように変更する必要があります。

for(int i=0;i<foos.Length;i++)
{
     // Sets the ith foo to bar. Note that array indexes start at 0!
     foos[i] = bar;
}

これを行うことにより、4つの整数が残ります。でアクセスするだけfoos[n]です。ここで、nは必要なn番目の変数です。配列の最初の要素は0にあることに注意してください。したがって、1番目の変数を取得するには、を呼び出しfoos[0]、4番目のfooにアクセスするにはを呼び出します。foos[3]

于 2012-08-07T02:52:38.600 に答える
0

おそらく別のアプローチの方が良いでしょう;-)

int[] foo;

// create foo

for(int i = 0; i < 4; i++)
{
  foo[i] = value;
}
于 2012-08-07T02:49:13.177 に答える