0
使用表單從用戶抓取輸入以將其創建爲對象(ToDo)。信息被引入到這個自引用類(ToDo)中以創建該對象,然後傳遞給另一個類Queue。IEquatable on Self Referential class
但問題是我需要將傳遞的以下對象與其他先前的對象進行比較。如果該對象具有相同的名稱,則不要將該信息扔到隊列類中。
但是從我的代碼中,Equals方法甚至沒有執行。只是想知道我在這裏做錯了什麼。
public class ToDo : IEquatable<ToDo>
{
private string _name;
private string _priority;
private ToDo _next;
private ToDo _previous;
Queue queue = new Queue();
public ToDo(string name, string priority)
{
_name = name;
_priority = priority;
_next = null;
_previous = null;
queue.Enqueue(this);
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Priority
{
get { return _priority; }
set { _priority = value; }
}
public ToDo Next
{
get { return _next; }
set { _next = value; }
}
public ToDo Previous
{
get { return _previous; }
set { _previous = value; }
}
public bool Equals(ToDo other)
{
if (ReferenceEquals(null, other))
return false;
if (ReferenceEquals(this, other))
return true;
return other.Name.Equals(Name);
}
public override bool Equals(object obj)
{
if (Object.ReferenceEquals(null, obj))
return false;
if (Object.ReferenceEquals(this, obj))
return true;
if (this.GetType() != obj.GetType())
return false;
return this.Equals(obj as ToDo);
}
public override int GetHashCode()
{
return this.Name.GetHashCode();
}
}
你可以嘗試做一個實現的IEqualityComparer另一個類並使用它。我在過去成功使用過IEqualityComparer –
reggaeguitar
2014-11-14 17:39:40
爲什麼要將對象放入對象內部的隊列中?特別是因爲隊列似乎沒有被使用(或者你爲了簡潔而省略了該代碼?) – juharr 2014-11-14 17:55:36
這將爲你創建的每個對象生成一個隊列。你確定這是你想要的行爲嗎? – 2014-11-14 17:57:40