使用串联 C# 引用变量

本文关键字:引用 变量 | 更新日期: 2024-11-08 17:57:22

我有许多变量,例如

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

现在,我有一个 for 循环,从 var x = 0 到 3(对于 4 个变量),我想使用 x 来调用这样的变量:

for(int x = 0; x < 4; x++)
{
    foo+x = bar;
}
因此,当 x = 1 时

,我的变量 foo1 将被分配值柱线(foo+x = bar == foo1 = bar 当 x = 1 时)。

有没有办法在 C# 中做到这一点,或者我应该采取另一种方法?

使用串联 C# 引用变量

这是不可能的,除非你想使用反射,这不是最好的方法。在不知道您要实现的目标的情况下,回答起来有点困难,但是您可以创建一个数组来保存变量,然后使用x作为索引器来访问它们

for(int x = 0; x < 4; x++)
{
    fooarr[x] = bar;
}
你能

做这样的事情吗:

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

很难判断在您的特定情况下什么是最佳方法,但这很可能不是好方法。您绝对需要 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);
}

也许另一种方法会更好;-)

int[] foo;
// create foo
for(int i = 0; i < 4; i++)
{
  foo[i] = value;
}

如果可能的话,你应该使用一个包含四个整数的数组。您可以像这样声明它:

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

通过这样做,你仍然会有四个整数;你只需使用 foos[n] 访问它们,其中 n 是你想要的第 n 个变量。请记住,数组的第一个元素位于 0,因此要获取第一个变量,您需要调用 foos[0] ,要访问第 4 个 foo,您将调用 foos[3]