.net研究之对象大小比较
2009-05-06 10:24
405 查看
实现对象大小比较有两种方式:
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
}
相关文章推荐
- python 之 不同类型对象的内存占用、大小比较
- miniui合并单元格或者比较大小找不到对象
- “.NET研究”VS2010测试功能之旅:编码的UI测试(3)-操作对象的识别原理
- .NET 2.0下反射和CodeDom访问对象属性性能测试比较
- Integer类型数据比较大小问题:(Integer定义的是对象,养成使用equals方法的好习惯)
- C#基础之数组排序,对象大小比较
- java 中对象比较大小
- DateTime 对象比较大小
- python对象的比较(is,==,对象大小比较>,<)
- .Net(C#)中,对象的相等比较问题
- 比较两string对象字符串的大小和其长度的比较
- 统计对象大小函数性能比较
- .Net(C#)中,对象的相等比较问题
- C++中 string对象的大小比较
- C#基础之数组排序,对象大小比较
- java-判断相同和对象比较大小
- Java中对两个对象进行比较大小
- JVM基础研究整理之对象大小
- .NET平台开源项目速览(2)Compare .NET Objects对象比较组件
- C#基础之数组排序,对象大小比较