Искать в LinkedList <T> - PullRequest
       31

Искать в LinkedList <T>

1 голос
/ 16 октября 2010

Давайте иметь этот код:

class student :IComparable , IComparable<student> 
{
    public string name = "";

    public override string ToString()
    {
        return name; 
    }

    #region IComparable Members

    public int CompareTo(object obj)
    {
        if (this.name.Equals(((student)obj).name ) )
            return 0 ; 
        else
            return -1 ; 
    }

    #endregion

    #region IComparable<student> Members

    public int CompareTo(student other)
    {
        if (this.name.Equals (other.name )) 
            return 0 ; 
        else
            return -1 ; 
    }

    #endregion
}

Я создаю LinkedList из этого класса в Main Like:

LinkedList<student> list = new LinkedList<student>(); 
list.AddLast(new student { name="Farah"}); 
list.AddLast(new student { name="Noor"}); 
list.AddLast(new student { name="Reem"});

foreach (student s in list)
{
    Console.WriteLine(s);
}

это печать: Фара Noor REEM

но когда я пытаюсь найти какой-либо элемент, он не находит его, например:

Console.WriteLine(list.Contains(new student{ name="Noor"})); 

Это Print false, хотя класс "student" реализует "IComparable, IComparable" !!

Что мне делать, чтобы работать ??

Ответы [ 2 ]

2 голосов
/ 16 октября 2010

Проблема, которая содержит, не работает с интерфейсом IComparable Использует метод Equals. ТАК переопределить это:

    public override bool Equals(object obj)
    {
        return this.CompareTo(((IComparable)obj)) == 0;
    }
1 голос
/ 16 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...