【问题标题】:Accessing a variable's name by using index of for loop使用 for 循环的索引访问变量的名称
【发布时间】:2015-06-30 22:14:11
【问题描述】:

假设我有 4 个字符串。

private string string_1, string_2, string_3, string_4;

然后假设我有一个 for 循环。如何通过 for 循环的索引访问变量名?这是我在说什么的一个想法:

for(int i = 0; i < 4; i++)
{
    string_ + i = "Hello, world! " + i;
}

我知道做上面的不会编译。

感谢您的帮助。

【问题讨论】:

  • 改用字典
  • 你不能这样做。如果你想要一个字符串列表,那么使用List&lt;string&gt; 类型,或者一个字符串数组。
  • 我现在正在阅读 MSDN。那么字典像哈希映射吗? @prashanth
  • 谢谢@prashanth。你已经回答了我的问题。如何选择它作为答案?感谢您的意见 DavidG。

标签: c# variables for-loop


【解决方案1】:

你不能按照你的要求去做——至少是直接做。

您可以从简单地将字符串放入一个数组开始,然后从该数组开始工作。

string[] strings = new []
{
    string_1,
    string_2,
    string_3,
    string_4,
};

for(int i = 0; i < 4; i++)
{
    strings[i] = "Hello, world! " + i;
}

Console.WriteLine(string_3); // != "Hello, world! 2"
Console.WriteLine(strings[2]); // == "Hello, world! 2"

但是原来的string_3没有改变,虽然它在数组中的槽是正确的。

你可以更进一步,这样做:

Action<string>[] setStrings = new Action<string>[]
{
    t => string_1 = t,
    t => string_2 = t,
    t => string_3 = t,
    t => string_4 = t,
};

for(int i = 0; i < 4; i++)
{
    setStrings[i]("Hello, world! " + i);
}

Console.WriteLine(string_3); // == "Hello, world! 2"

这按原计划工作 - string_3 确实得到了更新。虽然有点做作,但可能对你有用。

【讨论】:

    【解决方案2】:
    string[] hello = new string[4];
    for(int i = 0; i < 4; i++)
    {
        hello[i] = "Hello, world! " + i;
    }
    

    如果您想要一个可变长度列表,请使用实现了ICollection&lt;string&gt; 的类型,例如Dictionary&lt;string&gt;、HashSet&lt;string&gt; 或List&lt;string&gt;。

    【讨论】:

      【解决方案3】:

      将字符串放入数组中,然后使用 for 循环遍历数组。当您遍历数组时,在数组的第 i 个元素上调用您的命令。

      String[ ] array = ["a", "b","c"];
      for(int i = 0; i < array.length ; i++)
      // print array[i] 
      

      【讨论】:

        猜你喜欢
        • 2021-04-07
        • 1970-01-01
        • 2021-12-14
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 2021-04-13
        相关资源
        最近更新 更多