我宁愿不要在有序字典中创建两个单独的值到单独的条目中,但是如果有一种方法可以执行我想在这里执行的操作,那将很酷。
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放在类中。 哎呀,谢谢您的回答。
答案 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());
}
}
}
}
答案 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]);
}