如何显示作为int []数组的OrderedDictionary条目值的值?

时间:2018-07-28 00:49:06

标签: c#

我宁愿不要在有序字典中创建两个单独的值到单独的条目中,但是如果有一种方法可以执行我想在这里执行的操作,那将很酷。

public OrderedDictionary spellResults = new OrderedDictionary()
{
    {"Test",new int[]{5,7}}
};

public void Main()
{
    //i'm trying to display the integers within "spellResults["Test"]" but i have no idea how i would accomplish this

    int[] pval= ((Array)spellResults["Test"]) as int[];
    Console.WriteLine(pval[0]+","+pval[1]);   
}
  

编辑:事实证明我的操作方式也是正确的,但是当我第一次使用在线编译器尝试对其进行测试时,我忽略了将OrderedDictionary放在类中。    哎呀,谢谢您的回答。

3 个答案:

答案 0 :(得分:3)

foreach (var number in spellResults["Test"] as int[])
{
    Console.WriteLine(number);
}

但是,您需要首先检查spellResults["Test"]的类型,因为如果到NullReferenceException的转换失败,则会抛出int[](即它将尝试遍历{ {1}})。您应该事先执行空检查:

null

要按照原始代码片段以CSV格式打印数字,只需将var pval = spellResults["Test"] as int[]; if (pval != null) { foreach (var number in pval) { Console.WriteLine(number); } } 替换为string.Join-这样一来,您还可以避免程序在运行时抛出IndexOutOfRangeException foreach包含少于两个元素的

pval

答案 1 :(得分:2)

获得值后,简单的foreach循环就足够了,但是您可能想将OrderedDictionary更改为SortedDictionary

更新-在OP发表评论后更新为使用OrderedDictionary

using System;
using System.Collections.Specialized;

public class Program
{
    public static void Main()
    {
        var spellResults = new OrderedDictionary()
        {{"Test", new int[]{5, 7}}};
        var nums = spellResults["Test"] as int[];
        if (nums != null)
        {
            foreach (int num in nums)
            {
                Console.WriteLine(num.ToString());
            }
        }
    }
}

拨弄https://dotnetfiddle.net/pUXM3z

答案 2 :(得分:1)

static 与spellResults一起使用,因为您是在Main方法(已知为static方法)中使用它。请使用以下经过测试的代码。

public static OrderedDictionary spellResults = new OrderedDictionary()
{

    {"Test",new int[]{5,7}}
};
static void Main(string[] args)
{
    int[] pval = ((Array)spellResults["Test"]) as int[];
    Console.WriteLine(pval[0] + "," + pval[1]);
}

输出结果 enter image description here