2015-03-25 3 views
0

У меня есть словарь, который использует ULong в качестве ключа и структуры как значения, т.е.Печать пары ключей словаря значение в C#

public Dictionary<UInt64, OptimalOutputs> What_to_do>

Где структура optimaloutput является

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

    } 

Как я могу повторять в словаре для печати, каждый ключ вместе со значениями? Я попытался KeyValue пару, но напрасно

ответ

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

ага спасибо большого, я пропускал свойство значения :) –

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

спасибо за быстрый откос :) –

Смежные вопросы