繁体   English   中英

在C#中打印字典键值对

[英]Printing dictionary key value pairs in c#

我有一本字典,其中使用ulong作为键,使用结构作为值,即

public Dictionary<UInt64, OptimalOutputs> What_to_do>

最佳输出结构在哪里

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

    }

如何在字典中迭代打印每个键以及值? 我尝试了键值对,但徒劳

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 ,这有助于进行调试:

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);
}

您可以简单地使用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);
}

额外:

顺便说一下,您可以为OptimalOutputs模型覆盖ToString()

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM