Использование формы для ввода ввода от пользователя для его создания в объект (ToDo). Информация вводится в этот самореферентный класс (ToDo) для создания объекта, а затем передается в другую очередь класса.IEquatable on Self Referential class
Проблема в том, что мне нужно сравнить следующий объект, который передается, другим предыдущим объектам. Если объект имеет то же имя, не бросайте информацию в класс Queue.
Но из моего кода метод 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
Почему вы помещаете объект в очередь, находящуюся внутри объекта? Тем более, что очередь не используется (или вы просто опустили этот код для краткости?) – juharr
Это создаст очередь для каждого создаваемого вами объекта. Вы уверены, что это ваше желаемое поведение? –