c#如何在不操作GetEnumerator方法的情况下绕过此问题?

Bog*_*ger 1 c# foreach hashset

我想在hashset上使用foreach,但VS不会允许它.
这是我到目前为止:

{
class Team
{
    private HashSet<HeroStats> team;



    public Team()
    {

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

    public Team print(Team team) {
        List<HeroStats> l;
        foreach (HeroStats h in team)
            l.Add(h);
        return l;
    }
}
Run Code Online (Sandbox Code Playgroud)

}

有了这个代码VS说,foreach语句无法在类型"ConsoleApplication3.model.data.domain.Team"的变量操作,因为"ConsoleApplication3.model.data.domain.Team"不包含"的GetEnumerator"一个公共定义.

Mar*_*ell 5

这里有两个冲突team; 有:

  • HashSet<HeroStats> team (场)
  • Team team (参数)

第二个优先于此,但你谈的是"关于一个hashset的foreach",所以我猜你的意思是迭代这个字段:

foreach (HeroStats h in this.team)
        l.Add(h);
Run Code Online (Sandbox Code Playgroud)

(但请注意,您从未初始化l为新列表)

或者更简单:

return this.team.ToList();
Run Code Online (Sandbox Code Playgroud)

但请注意,这些都不会使用Team team传入的内容.

  • 他正在传球'团队',所以也许他想要'team.team`. (2认同)