C# 当值是类类型时,如何显示字典中的所有值

C# 当值是类类型时,如何显示字典中的所有值,c#,dictionary,C#,Dictionary,我有一个字典,我正试图显示所有的值。我发现答案的问题是,它们只返回键和值。我的值是我在存储库中创建的类型 下面是我的字典。My value是具有多个属性的My Badge类: public-class-BadgesRepository { 专用字典badgeDictionary=新字典(); 公共无效AddBadgeDictionaryEntry(内部badgeID,新Badge-newBadge) { badgeDictionary.Add(badgeID,newBadge); } } 以下

我有一个字典,我正试图显示所有的值。我发现答案的问题是,它们只返回键和值。我的值是我在存储库中创建的类型

  • 下面是我的字典。My value是具有多个属性的My Badge类:
  • public-class-BadgesRepository
    {
    专用字典badgeDictionary=新字典();
    公共无效AddBadgeDictionaryEntry(内部badgeID,新Badge-newBadge)
    {
    badgeDictionary.Add(badgeID,newBadge);
    }
    }
    
  • 以下是我的徽章等级:
  • public class徽章
    {
    public int-BadgeID{get;set;}
    公共字符串名称{get;set;}
    公共列表门列表{get;set;}
    }
    
  • 我想在这里显示字典的所有值:
  • private void ViewAllBadges()
    {
    Console.WriteLine(“下面列出了所有徽章数据:”);
    Dictionary.ValueCollection值=
    foreach(值中的徽章val)
    {
    WriteLine(“徽章ID:{0}”,val);
    }
    }
    
    您只需要为您的Badge类methinks提供一个ToString方法。 根据他们的例子:

    class Person
    {
        public int BadgeID { get; set; }
        public string BadgeName { get; set; }
        public List<string> DoorList { get; set; }
    
        public override string ToString()
        {
            return BadgeID.ToString() + " " + 
                   BadgeName + " "+
                   String.Join(", ", DoorList.ToArray()); 
        }
    }
    
    班级人员
    {
    public int-BadgeID{get;set;}
    公共字符串名称{get;set;}
    公共列表门列表{get;set;}
    公共重写字符串ToString()
    {
    返回BadgeID.ToString()+“”+
    徽章名称+“”+
    Join(“,”,DoorList.ToArray());
    }
    }
    
    您只需要为您的Badge类methinks提供一个ToString方法。 根据他们的例子:

    class Person
    {
        public int BadgeID { get; set; }
        public string BadgeName { get; set; }
        public List<string> DoorList { get; set; }
    
        public override string ToString()
        {
            return BadgeID.ToString() + " " + 
                   BadgeName + " "+
                   String.Join(", ", DoorList.ToArray()); 
        }
    }
    
    班级人员
    {
    public int-BadgeID{get;set;}
    公共字符串名称{get;set;}
    公共列表门列表{get;set;}
    公共重写字符串ToString()
    {
    返回BadgeID.ToString()+“”+
    徽章名称+“”+
    Join(“,”,DoorList.ToArray());
    }
    }
    
    您可以在Badge类中重写ToString(),如roadrunner66所述

    然后

    (上面的代码只是一个想法,我还没有尝试构建此代码,所以可能会出现错误构建。)

    您可以在Badge类中重写ToString(),如roadrunner66所述

    然后

    (上面的代码只是想法,我还没有尝试构建这段代码,所以可能是错误构建。)

    private void ViewAllBadges()
    {
    Console.WriteLine(“下面列出了所有徽章数据:”);
    Dictionary.ValueCollection值=
    foreach(值中的徽章val)
    {
    WriteLine(“徽章ID:{0}”,val);
    }
    }
    


    看起来您想使用该属性。
    ViewAllBadges
    方法添加到
    BadgesRepository
    类中。注意
    foreach
    循环中的
    .Values
    属性:

    public-class-BadgesRepository
    {
    专用字典badgeDictionary=新字典();
    公共无效AddBadgeDictionaryEntry(内部badgeID,新Badge-newBadge)
    {
    badgeDictionary.Add(badgeID,newBadge);
    }
    公共无效ViewAllBadges()
    {
    foreach(badgeDictionary.Values中的徽章)
    {
    控制台写入线(
    $“徽章ID:{Badge.BadgeID},”+
    $“徽章名称:{Badge.BadgeName},”+
    $“门列表:{string.Join(“,”,badge.DoorList)}”);
    }
    }
    }
    
    你也可以像其他人建议的那样在你的
    徽章
    课程中

    public class徽章
    {
    public int-BadgeID{get;set;}
    公共字符串名称{get;set;}
    公共列表门列表{get;set;}
    公共重写字符串ToString()
    {
    返回$“徽章ID:{BadgeID},”+
    $“徽章名称:{BadgeName},”+
    $“门列表:{string.Join(“,”,门列表)}”;
    }
    }
    
    …并简化
    ViewAllBadges()
    方法:

    public void ViewAllBadges()
    {
    foreach(badgeDictionary.Values中的徽章)
    {
    Console.WriteLine(badge.ToString());
    }
    }
    
    下面是一个调用代码示例:

    var bd=new-BadgesRepository();
    var badge1=新的Badge();
    badge1.BadgeID=1;
    badge1.BadgeName=“一”;
    badge1.DoorList=新列表(){“门1”,“门100”};
    bd.AddBadgeDictionaryEntry(1,badge1);
    var badge2=新的Badge();
    badge2.BadgeID=2;
    badge2.BadgeName=“两个”;
    badge2.DoorList=新列表(){“门2”,“门200”};
    bd.AddBadgeDictionaryEntry(2,badge2);
    var badge3=新的Badge();
    badge3.BadgeID=3;
    badge3.BadgeName=“三”;
    badge3.DoorList=新列表(){“门3”,“门300”};
    bd.AddBadgeDictionaryEntry(3,badge3);
    bd.ViewAllBadges();
    
    private void ViewAllBadges()
    {
    Console.WriteLine(“下面列出了所有徽章数据:”);
    Dictionary.ValueCollection值=
    foreach(值中的徽章val)
    {
    WriteLine(“徽章ID:{0}”,val);
    }
    }
    


    看起来您想使用该属性。
    ViewAllBadges
    方法添加到
    BadgesRepository
    类中。注意
    foreach
    循环中的
    .Values
    属性:

    public-class-BadgesRepository
    {
    专用字典badgeDictionary=新字典();
    公共无效AddBadgeDictionaryEntry(内部badgeID,新Badge-newBadge)
    {
    badgeDictionary.Add(badgeID,newBadge);
    }
    公共无效ViewAllBadges()
    {
    foreach(badgeDictionary.Values中的徽章)
    {
    控制台写入线(
    $“徽章ID:{Badge.BadgeID},”+
    $“徽章名称:{Badge.BadgeName},”+
    $“门列表:{string.Join(“,”,badge.DoorList)}”);
    }
    }
    }
    
    你也可以像其他人建议的那样在你的
    徽章
    课程中

    public class徽章
    {
    public int-BadgeID{get;set;}
    公共字符串名称{get;set;}
    公共列表门列表{get;set;}
    公共重写字符串ToString()
    {
    返回$“徽章ID:{BadgeID},”+
    $“徽章名称:{BadgeName},
    
    private void ViewAllBadges()
    {
        Console.WriteLine("All badge data is listed below: ");
        Dictionary<int, Badge>.ValueCollection values = 
        foreach (Badge val in values)
        {
            Console.WriteLine("Badge ID: {0}", val);
        }
    }
    
    class Person
    {
        public int BadgeID { get; set; }
        public string BadgeName { get; set; }
        public List<string> DoorList { get; set; }
    
        public override string ToString()
        {
            return BadgeID.ToString() + " " + 
                   BadgeName + " "+
                   String.Join(", ", DoorList.ToArray()); 
        }
    }
    
    foreach (var item in badgeDictionary)
    {
        Badge badge = item.Value;
        Console.WriteLine(badge.ToString());
    }
    
    foreach (var item in badgeDictionary)
    {
        Badge badge = item.Value;
    
        Console.WriteLine("Badge ID: {0} BadgeName {1} DoorList {2}", badge.BadgeID, badge.BadgeName, String.Join(", ", badge.DoorList.ToArray()));
    }