C# c如何在不操纵GetEnumerator方法的情况下绕过此问题?
我想在哈希集上使用foreach,但VS不允许。 这就是我到目前为止所做的:C# c如何在不操纵GetEnumerator方法的情况下绕过此问题?,c#,foreach,hashset,C#,Foreach,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.
{
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”的公共定义 这里有两个相互冲突的团队;有:
散列队出场
团队成员请输入参数
第二个在这里优先,但您讨论的是哈希集上的foreach,所以我猜您的意思是迭代字段:
但是请注意,您从未将l初始化为新列表
或者更简单地说:
return this.team.ToList();
但是,请注意,它们都不使用传入的团队。这里有两个相互冲突的团队;有:
散列队出场
团队成员请输入参数
第二个在这里优先,但您讨论的是哈希集上的foreach,所以我猜您的意思是迭代字段:
但是请注意,您从未将l初始化为新列表
或者更简单地说:
return this.team.ToList();
但是,请注意,它们都不使用传入的团队。您需要初始化l,否则在调用Add on时会出错。重命名您的私有哈希集团队;你需要初始化l,否则当你调用Add时会出错。重命名你的私有HashSet团队;对英雄们来说,你们的问题会变得很清楚。他在一个团队中传球,所以也许他想要一个团队。团队。@Gabe可能是。。。可以是;只有警察才知道这件事sure@MarcGravell我认为加布是对的,OP被坏变量弄糊涂了,但我已经纠正了错误。从参数的命名来看,解决方案确实变得相当模糊,对此表示抱歉。我还注意到返回类型是错误的,因为方法的类型是Team,返回值的类型是List。非常感谢。他在一个队中传球,所以也许他想要一个队。一个队。@Gabe可能是。。。可以是;只有警察才知道这件事sure@MarcGravell我认为加布是对的,OP被坏变量弄糊涂了,但我已经纠正了错误。从参数的命名来看,解决方案确实变得相当模糊,对此表示抱歉。我还注意到返回类型是错误的,因为方法的类型是Team,返回值的类型是List。非常感谢。