我不希望在有序字典中创建两个单独的值,但是如果有一种方法来完成我在这里试图做的事情,那就太酷了。
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放在类中。谢谢你的回答。
发布于 2018-07-28 01:06:40
使用静态和spellResults,因为您在主方法中使用它,这是已知的静态method.use,它遵循测试代码。
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]);
}输出结果

发布于 2018-07-28 01:02:27
foreach (var number in spellResults["Test"] as int[])
{
Console.WriteLine(number);
}但是,您需要首先检查spellResults["Test"]的类型,因为如果转换到int[]没有成功(即它将尝试在null上迭代),则会引发NullReferenceException。您应该事先执行空检查:
var pval = spellResults["Test"] as int[];
if (pval != null)
{
foreach (var number in pval)
{
Console.WriteLine(number);
}
}要打印CSV格式的数字,如原始代码段所示,只需将foreach替换为string.Join -这样,如果pval包含的元素少于2个,则还可以避免在运行时抛出IndexOutOfRangeException的程序:
if (pval != null)
{
// this is bad, an IndexOutOfRangeException will be thrown
// if pval contains less than 2 elements:
// Console.WriteLine(pval[0] + "," + pval[1]);
// use string.Join instead::
Console.WriteLine(string.Join(",", pval));
}https://stackoverflow.com/questions/51567117
复制相似问题