C# 在LinkedList中搜索<;T>;
让我们看看下面的代码:C# 在LinkedList中搜索<;T>;,c#,interface,C#,Interface,让我们看看下面的代码: class student :IComparable , IComparable<student> { public string name = ""; public override string ToString() { return name; } #region IComparable Members public int CompareTo(object obj) {
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
}
虽然“student”类实现了“IComparable,IComparable”,但此打印错误
我该怎么做才能工作 包含的问题不适用于IComparable接口。它使用Equals方法。因此,请忽略它:
public override bool Equals(object obj)
{
return this.CompareTo(((IComparable)obj)) == 0;
}
为您的学生班级实施和培训
IComparable
施压?@dalle-只是为了制造戏剧性的重音:)向学生
施压会更合适,并节省少量指令。@dalle-因为Dewfy使用了CompareTo方法:)@Farah\u online:IComparable.CompareTo
的参数类型为object
。i可比较。CompareTo
的参数类型为T
。强制转换为IComparable
没有意义,但是当然IComparable
可以转换为对象。对Student
进行强制转换将导致调用IComparable.CompareTo
方法,然后该方法“保存”一次强制转换,只保存少量指令。
Console.WriteLine(list.Contains(new student{ name="Noor"}));
public override bool Equals(object obj)
{
return this.CompareTo(((IComparable)obj)) == 0;
}