我正在使用IComparable和IComparer
在学生班:[IComparable]
public int CompareTo(Student studentToCompare)
{
if (this.Number < studentToCompare.Number)
return 1;
else if (this.Number > studentToCompare.Number)
return -1;
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在StudentCompareName类中:[IComparer]
public int Compare(Student x, Student y)
{
return string.Compare(x.Name, y.Name);
}
Run Code Online (Sandbox Code Playgroud)
通过比较(学生x,学生y)我正在按姓名排序学生名单.
如果我不在Student-class中使用CompareTo(),我会收到错误.
我想知道为什么我需要在我的主(学生)课程中有一个CompareTo(),它有什么作用?为什么我需要先在Student类中比较学生编号,之后我可以在StudentCompareName类中对名称进行排序?
我正在使用IComparable和IComparer
这是混乱的根源.你只需要两个中的一个 - 它们很少在同一个类中实现.
IComparable<T>实现以在一个对象和另一个对象之间进行自然比较.在类似的情况下Student,这可能没有意义,因为有多种方法可以比较学生.另一方面,对于像DateTime它这样的东西是完全有道理的.
IComparer<T>意味着要进行自定义比较 - 例如,通过比较名称StudentNameComparer来实现哪个实现是有意义的IComparer<Student>.
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |