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();
}
}