Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 哈希集中的Foreach_C#_Foreach_Hashset - Fatal编程技术网

C# 哈希集中的Foreach

C# 哈希集中的Foreach,c#,foreach,hashset,C#,Foreach,Hashset,我有一个不能包含重复项的结构,所以我选择将其表示为哈希集 class Team { private HashSet<HeroStats> team = new HashSet<HeroStats>(); public int count() { int res = 0; res = team.Count; return res; } public Team() {

我有一个不能包含重复项的结构,所以我选择将其表示为哈希集

class Team
{
    private HashSet<HeroStats> team = new HashSet<HeroStats>();

    public int count()
    {
        int res = 0;
        res = team.Count;
        return res;
    }

    public Team()
    {
    }

    public void add(HeroStats hero)
    {
        if (team.Count <= 5)
            team.Add(hero);
        else
        Console.WriteLine("Team is full , create another team");
     }

    public List<HeroStats> print() {
        List<HeroStats> l = new List<HeroStats>();
        foreach (HeroStats h in team)
            l.Add(h);
        return l;
    }
}

如何使foreach函数在不丢弃哈希集的情况下工作?

您需要公开一系列hero,您可以从外部的集合中获得这些hero。您不希望完全访问整个集合,因为这样他们可以在集合已满时添加Hero,或者删除不应该添加的Hero,等等。您只希望他们能够遍历所有存在的Hero
IEnumerable
正好公开了该功能

public IEnumerable<HeroStats> Heros { get { return team; } }

你需要公开一系列的英雄,你可以从你的场景中,从外部获得。您不希望完全访问整个集合,因为这样他们可以在集合已满时添加Hero,或者删除不应该添加的Hero,等等。您只希望他们能够遍历所有存在的Hero
IEnumerable
正好公开了该功能

public IEnumerable<HeroStats> Heros { get { return team; } }

您必须在团队类中实现IEnumerable

public class Team : IEnumerable<HeroStats>
{
    private HashSet<HeroStats> stats = new HashSet<HeroStats>();

    public IEnumerator<HeroStats> GetEnumerator()
    {
        return stats.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return stats.GetEnumerator();
    }
}
公共类团队:IEnumerable
{
私有HashSet stats=新HashSet();
公共IEnumerator GetEnumerator()
{
返回stats.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
返回stats.GetEnumerator();
}
}

您必须在团队类中实现IEnumerable

public class Team : IEnumerable<HeroStats>
{
    private HashSet<HeroStats> stats = new HashSet<HeroStats>();

    public IEnumerator<HeroStats> GetEnumerator()
    {
        return stats.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return stats.GetEnumerator();
    }
}
公共类团队:IEnumerable
{
私有HashSet stats=新HashSet();
公共IEnumerator GetEnumerator()
{
返回stats.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
返回stats.GetEnumerator();
}
}