实现对象大小比较有两种方式:
1.实现System.IComparable<T>
2.专门编写一个类实现System.Collenctions.Generic.IComparer<T>
1.实现System.IComparable<T>
说明:
int CompareTo( Object obj)
CompareTo的实现
1.obj 不具有与此实例相同的类型,要抛出ArgumentException异常。
2.给实现者的说明
对于对象 A、B 和 C,以下条件必须为真:
A.CompareTo(A) 必须返回零。
如果 A.CompareTo(B) 返回零,则 B.CompareTo(A) 必须返回零。
如果 A.CompareTo(B) 返回零并且 B.CompareTo(C) 返回零,则 A.CompareTo(C) 必须返回零。
如果 A.CompareTo(B) 返回一个非零值,则 B.CompareTo(A) 必须返回符号相反的值。
如果 A.CompareTo(B) 返回一个不等于零的值 x,并且 B.CompareTo(C) 返回一个与 x 符号相同的值 y,
则 A.CompareTo(C) 必须返回与 x 和 y 符号相同的值。
示例:
class TelPhone : System.IComparable<TelPhone>
{
public int sortId;
#region IComparable<TelPhone> 成员
public int CompareTo(TelPhone other)
{
if (this.sortId == other.sortId)
return 0;
if (this.sortId > other.sortId)
{
return 1;
}
else
{
return -1;
}
}
#endregion
}
2.专门编写一个类实现System.Collenctions.Generic.IComparer<T>
说明:
int Compare(T x,T y)
比较两个对象并返回一个值,指示一个对象是小于、等于还是大于另一个对象。
小于零
x 小于 y。
零
x 等于 y。
大于零
x 大于 y。
示例:
class Car
{
private int sortId;
public int SortId
{
get { return sortId; }
set { sortId = value; }
}
}
class CarComparer : System.Collections.Generic.IComparer<Car>
{
#region IComparer<Car> 成员
public int Compare(Car x, Car y)
{
if (x.SortId == y.SortId)
return 0;
if (x.SortId > y.SortId)
{
return 1;
}
else
{
return -1;
}
}
#endregion
}