【问题标题】:Accessing contents of an array within a dictionary访问字典中数组的内容
【发布时间】:2014-03-05 07:34:11
【问题描述】:

我正在尝试访问和检索数组中的值,该数组已作为值数据类型存储在字典中,但到目前为止还没有任何运气。请参阅以下我的字典当前语法的示例。

Dictionary<string, double[]> dict= new Dictionary<string, double[]>();

double[] dubarray = new double[20];
String[] keyval = somestringarray[0].ToString();

然后我有一个循环将键/值存储到字典中。

dict.Add(keyval[0], dubarray);

现在我正在解析字典并根据键访问数组中包含的值(dubarray)。我还想返回整个数组以用于记录目的。目前我收到以下内容:“System.Double[]”

foreach (KeyValuePair<string, double[]> item in dict)
{
    System.Diagnostics.Debug.WriteLine("dict.KEY is : " + item.Key + "dict.VALUE is : " + item.Value);
}

有人可以回答我如何访问字典每个实例中包含的数据元素吗?

【问题讨论】:

  • Double[],这是默认的 ToString 将为其打印的值。如果要显示所有值,请遍历 item.Value

标签: c# arrays dictionary


【解决方案1】:

您可以连接数组值来编写它们:

foreach (KeyValuePair<string, double[]> item in dict)
{
    Debug.WriteLine("dict.KEY is : " + item.Key + 
                    "dict.VALUE is : " + String.Join(",", item.Value));
}

当您在数组类型的变量上调用 ToString() 时,您只会得到包含类型名称的字符串 - 在您的情况下为 "System.Double[]"

【讨论】:

  • 工作就像一个魅力谢谢老兄!
  • 现在虽然这允许我打印字典中的值。我将如何调用该数组实例中的特定值或索引?
  • @techietalk item.Valuedouble[] 数组。所以,如果你想得到第一个值,你可以使用item.Value[0]。但是你需要确保数组不为空 - 否则你会得到 IndexOutOfRange 异常
【解决方案2】:
double[] dubarray = dict[mystring].ToArray();

【讨论】:

    【解决方案3】:

    发生这种情况的原因是,如果 ToString() 没有被类覆盖,它会返回 Object 类型的完全限定名称。当你这样做时

    Debug.WriteLine(item.Value);
    

    它会自动为 Value 中的类调用 ToString() 函数。在这种情况下,它是一个双精度数组,或 System.double[]。

    您要做的是获取数组中的所有值,将它们串在一起,然后显示结果。

    foreach (KeyValuePair<string, double[]> item in dict)
    {
        Debug.WriteLine(String.Format("dict.KEY IS : {0}\ndict.VALUE is : {1}", 
                                       item.Key, string.Join(", ", meow["Test"])));
    }
    

    【讨论】:

    • 现在虽然这允许我打印字典中的值。我将如何调用该数组实例中的特定值或索引?
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多