2015-03-25 85 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