• 用IComparable和IComparable<T>接口实现两个类对象的比较大小.


    1.IComparable接口

    namespace System
    {
        public interface IComparable
        {
             //Less than zero This instance is less than obj. 
             //Zero This instance is equal to obj. 
             //Greater than zero This instance is greater than obj.
             int CompareTo(object obj);
        }
    }

    2.一个example

    namespace ConsoleApplicationCompare
    {
        class Program
        {
            static void Main(string[] args)
            {
                Student s1 = new Student();
                Student s2 = new Student();

                s1.Name = "张三";
                s2.Name = "张三";

                s1.Score = 112;
                s2.Score = 211;

                Console.WriteLine(((IComparable)s1).CompareTo(s2));

                Console.ReadKey();
            }       
        }

        public class Student: IComparable
        {
            public string Name { set; get; }
            public int Score { set; get; }

            public int CompareTo(object obj)
            {
                int result = 0;

                Student o = (Student)obj;
                if (this.Score > o.Score)
                    result = 1;
                else if (this.Score == o.Score)
                    result = 0;
                else
                    result = -1;

                return result;
            }

        }
    }

    3.IComparable<T>接口

    namespace System
    {
        // Type parameters: T: The type of objects to compare. That  is, you can use either the type you specified or any type that is less derived.
        public interface IComparable<in T>
        {
            int CompareTo(T other);
        }
    }

    4. example 第二版

    namespace ConsoleApplicationCompareT
    {
        class Program
        {
            static void Main(string[] args)
            {
                Student s1 = new Student();
                Student s2 = new Student();

                s1.Name = "张三";
                s2.Name = "张三";

                s1.Score = 112;
                s2.Score = 211;

                Console.WriteLine(s1.CompareTo(s2));

                Console.ReadKey();
            }
        }

        public class Student : IComparable<Student>
        {
            public string Name { set; get; }
            public int Score { set; get; }

            public int CompareTo(Student obj)
            {
                int result = 0;

                if (this.Score > obj.Score)
                    result = 1;
                else if (this.Score == obj.Score)
                    result = 0;
                else
                    result = -1;

                return result;
            }

        }
    }

    5.结论

    泛型接口更好用, it's obvious.

    作者:BobLiu
    邮箱:lzd_ren@hotmail.com
    出处:http://www.cnblogs.com/liuzhendong
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    解决SecureCRT中文显示乱码
    Linux命令: chown
    secureCRT登录不上ubuntu,Connection closed
    another app is currently holding the yum lock;waiting for it to exit解决
    分析一个socket通信: server/client
    Centos配置国内yum源
    liteos CPU占用率(十六)
    ft6236 触摸屏驱动
    Multi-touch (MT) Protocol 小结
    liteos 异常接管(十五)
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2178622.html
Copyright © 2020-2023  润新知