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

时间:2014-07-07 11:28:59

标签: 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;
    }
}

}

使用此代码,VS表示foreach语句无法对“ConsoleApplication3.model.data.domain.Team”类型的变量进行操作,因为“ConsoleApplication3.model.data.domain.Team”不包含“GetEnumerator”的公共定义”。

1 个答案:

答案 0 :(得分:5)

这里有两个有冲突的team;有:

  • HashSet<HeroStats> team(字段)
  • Team team(参数)

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

foreach (HeroStats h in this.team)
        l.Add(h);

(但请注意,您永远不会将l初始化为新列表)

或更简单:

return this.team.ToList();

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