2015-03-25 86 views
0

我有一个使用ULONG作为密钥和结构为值的字典,即印刷字典键值对

public Dictionary<UInt64, OptimalOutputs> What_to_do>

哪里optimaloutput结构是

public struct OptimalOutputs 
    { 
     public short gotoschool; 
     public short goForDining; 
     public short GoToAcademy; 

    } 

我如何迭代字典来打印每一个关键字和值? 我试过的键值对,但徒劳

回答

5
foreach(KeyValuePair<UInt64, OptimalOutputs> pair in dict) 
{ 
    Console.WriteLine("Key: {0} Values: {1},{2},{3}", 
     pair.Key, 
     pair.Value.gotoschool, pair.Value.goForDining, pair.Value.GoToAcademy); 
} 

你也可以覆盖你的结构ToString这有助于F.E.调试:

public struct OptimalOutputs 
{ 
    public short GotoSchool; 
    public short GoForDining; 
    public short GoToAcademy; 

    public override string ToString() 
    { 
     return string.Format("{0}, {1}, {2}", GoForDining, GotoSchool, GoToAcademy); 
    } 
} 

现在你可以使用这个较短的版本(ToString被隐式调用):

foreach (KeyValuePair<UInt64, OptimalOutputs> pair in dict) 
{ 
    Console.WriteLine("Key: {0} Values: {1}", pair.Key, pair.Value); 
} 
+0

是的感谢名单了很多,我缺少值的属性:) – 2015-03-25 10:38:07

2

您可以简单地使用foreach迭代:

foreach (KeyValuePair<UInt64, OptimalOutputs> pair in dictionary) 
{ 
    Console.WriteLine(string.Format("Key: {0} ", pair.Key); 
    Console.WriteLine(string.Format("Values: {0}, {1}, {2}", 
           pair.Value.goForDining, 
           pair.Value.gotoschool,      
           pair.Value.GoToAcademy); 
} 

附加:

顺便说一句,你可以覆盖ToString()OptimalOutputs模型。

public class OptimalOutputs 
{ 
    ... 
    public override string ToString() 
     { 
     return string.Format("Values: {0}, {1}, {2}", goForDining, gotoschool, GoToAcademy); 
     } 
    ... 
} 

然后:

foreach (KeyValuePair<UInt64, OptimalOutputs> pair in dictionary) 
{ 
    Console.WriteLine(string.Format("Key: {0} Values: {1}", pair.Key, pair.Value); 
} 
+0

感谢名单,以便快速养神:) – 2015-03-25 10:38:31