1
让我们有这样的代码:搜索<T>
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:
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);
}
它的打印: 法拉 努尔 REEM
但是当我尝试搜索任何元素时,它找不到它,如:
Console.WriteLine(list.Contains(new student{ name="Noor"}));
This Print false虽然“学生”类实现了“IComparable,IComparable”!
我应该怎么做?
为什么要转换成'IComparable'? – dalle 2010-10-16 06:55:15
@dalle - 只是为了使戏剧性的口音:) – Dewfy 2010-10-17 10:49:34
铸造'学生'会更合适,并节省一小部分的指示。 – dalle 2010-10-17 14:37:34