您的位置:首页 > 移动开发 > Objective-C

.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
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net class object c