【问题标题】:How to create variables with dynamic names in C#?如何在 C# 中创建具有动态名称的变量?
【发布时间】:2009-07-18 16:37:28
【问题描述】:

我想在 for 循环中创建一个 var,例如

for(int i; i<=10;i++)
{
    string s+i = "abc";
}

这应该创建变量 s0、s1、s2... 到 s10。

【问题讨论】:

  • 你用什么语言工作?
  • 请指定上下文...
  • 你的问题是什么?
  • @cagin: +1 这在 javascript 中是可能的,我在 c# 中从未见过。我想这只能在脚本语言而不是编译语言中实现。如果您的问题更具体,您可能会避免投反对票。

标签: c# string dynamic-variables


【解决方案1】:

您可能想要使用数组。我不知道它们在 c# 中是如何工作的(我是一个 Java 人),但是应该这样做:

string[] s = new string[10];
for (int i; i< 10; i++)
{
    s[i] = "abc";
}

然后阅读 http://msdn.microsoft.com/en-us/library/aa288453(VS.71).aspx

【讨论】:

  • +1 只是为了弄清楚 OP 到底在说什么。
【解决方案2】:

当您尝试重新定义变量“i”时,您的第一个示例不适用于任何语言。它是循环控制中的int,但循环主体中的string

根据您更新的问题,最简单的解决方案是使用数组(在 C# 中):

string[] s = new string[10];
for (int i; i< 10; i++)
{
    s[i] = "abc";
}

【讨论】:

    【解决方案3】:

    显然,这高度依赖于语言。在大多数语言中,这是完全不可能的。在 Javascript 中,在浏览器中,以下工作:

    for (var i = 0; i<10 ; i++) { window["sq"+i] = i * i; }
    

    例如,现在变量 sq3 设置为 9。

    【讨论】:

      【解决方案4】:

      您可以使用字典。 Key - 对象的动态名称 价值 - 对象

              Dictionary<String, Object> dictionary = new Dictionary<String, Object>();
              for (int i = 0; i <= 10; i++)
              {
                  //create name
                  string name = String.Format("s{0}", i);
                  //check name
                  if (dictionary.ContainsKey(name))
                  {
                      dictionary[name] = i.ToString();
                  }
                  else
                  {
                      dictionary.Add(name, i.ToString());
                  }
              }
              //Simple test
              foreach (KeyValuePair<String, Object> kvp in dictionary)
              {
                  Console.WriteLine(String.Format("Key: {0} - Value: {1}", kvp.Key, kvp.Value));
              }
      

      输出:

      Key: s0 - Value: 0
      Key: s1 - Value: 1
      Key: s2 - Value: 2
      Key: s3 - Value: 3 
      Key: s4 - Value: 4
      Key: s5 - Value: 5
      Key: s6 - Value: 6
      Key: s7 - Value: 7
      Key: s8 - Value: 8
      Key: s9 - Value: 9
      Key: s10 - Value: 10
      

      【讨论】:

        【解决方案5】:

        使用某种eval(如果该语言可用)。

        【讨论】:

          【解决方案6】:

          这取决于语言。

          通常当人们想要这样做时,正确的做法是使用存储键名和关联值的哈希表/字典/映射等数据结构。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-16
            • 2012-01-05
            • 1970-01-01
            • 2012-12-14
            • 2013-01-12
            • 1970-01-01
            • 2019-09-15
            相关资源
            最近更新 更多