【问题标题】:I am trying to create multiple arrays/dictionaries in C# using a for loop我正在尝试使用 for 循环在 C# 中创建多个数组/字典
【发布时间】:2016-11-11 06:11:58
【问题描述】:

我正在尝试使用 for 循环在 C# 中创建多个数组/字典。我可以单独声明它们,但它不干净。

这是我的代码:

string[] names = ["dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB"];

for (int i = 0; i <= names.Length; i++)
{
    string building = names[i];
    Dictionary<long, int> building = new Dictionary<long, int>();
}

我正在尝试使用存储在名称数组中的名称来迭代地创建数组。 Visual Studio 不接受已声明的“构建”。任何建议将不胜感激。谢谢!

【问题讨论】:

  • 那么你想根据其他数据来确定局部变量的名称吗?那是不可能的。为什么变量名很重要?你用字典做什么

标签: c# arrays for-loop dictionary


【解决方案1】:

在 C# 中无法创建动态命名的局部变量。

也许你想要一本字典?

string[] names = ["dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB"];
var buildings = new Dictionary<string,Dictionary<long, int>>();

for (int i = 0; i <= names.Length; i++) {
      buildings[names[i]] = new Dictionary<long, int>();
}

//... meanwhile, at the Hall of Justice ...

// reference the dictionary by key string
buildings["dSSB"][1234L] = 5678;

【讨论】:

  • @D Stanley "...与此同时,在司法厅..." 哈哈哈这让我笑了 :) 谢谢你的回答。我正在尝试创建一个可以序列化以创建 JSON 文件的数据结构。
【解决方案2】:

你可以这样试试

        string[] names = {"dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB"};
        Dictionary<string, Dictionary<long, int>> buildings = new Dictionary<string, Dictionary<long, int>>();
        for (int i = 0; i <= names.Length -1; i++) 
        {
            buildings[names[i]] = new Dictionary<long, int>();
            buildings[names[i]].Add(5L, 55);
        }

        //Here you can get the needed dictionary from the 'parent' dictionary by key
        var neededDictionary = buildings["dSSB"];

干杯

【讨论】:

  • 感谢您的回答!我想知道:为什么要使用“var”而不是“dictionary”?有优势吗?
  • 没有优势,这也被认为是一种不好的做法,因为可读性较差。 CLR 将在编译时解析变量的类型。在msdn.microsoft.com/en-us/library/bb383973.aspx 上查看更多信息抱歉回复晚了
【解决方案3】:

如果你只是想制作一本字典,然后往里面放东西:

        Dictionary<int, string> buildings = new Dictionary<int, string>();

        string[] names = { "dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB" };
        for (int i = 0; i < names.Length; i++)
        {
            buildings.Add(i, names[i]);
        }

        foreach (KeyValuePair<int, string> building in buildings)
        {
            Console.WriteLine(building);
        }

【讨论】:

  • 那么,“建筑”是一个通用变量代表一个键吗?
  • 没有。我不应该在这个例子中使用 var 关键字。 “建筑”是一个 KeyValuePair。我想我可以解决它。
  • "var" 可能是一个令人沮丧的词。查一下。它是强类型变量的简写,它被分配的类型。 var chicken = new Chicken() 是 Chicken chicken = new Chicken() 的同义词;
猜你喜欢
  • 2017-09-16
  • 1970-01-01
  • 2018-07-07
  • 2016-01-11
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2023-01-17
  • 2020-06-20
相关资源
最近更新 更多