0
我有一个名为Team的类。C# - 添加到HashSet时发生Stackoverflow异常<T>
class Team
{
public Team(string name)
{
this.Name = name;
this.Wins = 0;
this.Opponents = new HashSet<Team>();
}
public string Name { get; set; }
public int Wins { get; set; }
public HashSet<Team> Opponents { get; set; }
}
我得到一个#1例外,每当我试图用一个单一的对手在另一支球队的HashSet的具有零名反对者guestTeam.Opponents.Add(homeTeam);
这里补充现有的团队hometeam已经在对手一个对手,而guestTeam.Opponents
仍然是空的。
它是一个小测试应用程序。 堆栈跟踪的帧数又显示3
任何想法,为什么我会得到这样一个异常抛出?
显示导致异常的代码。顺便说一句,如果你在'HashSet'中使用自定义类,你应该重载'Equals' +'GetHashCode'并且/或者实现'IEquatable'。 –
@TimSchmelter没有必要重写'Equals + GetHashCode',如果你可以比较引用。 –
@ TitianCernicova-Dragomir:true,但是因为'HashSet <>'甚至是这个类中的公共属性,所以如果他使用不同的实例,他应该知道他仍然可以添加重复的团队(f.e。same name)。这通常是不可取的。在这种情况下,它肯定是一种代码异味 –