zoukankan      html  css  js  c++  java
  • 用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
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    做个坚强的逆行者,献给终日奋斗的你我——《当幸福来敲门》
    学习jvm,关于MAT an internal error occurred during:"Parsing heap dump" from问题
    很详尽KMP算法(厉害)
    插入排序[数据结构](复习)
    JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat(复制)
    Hadoop集群配置搭建
    Tomcat IO阻塞异常
    centos通过yum安装jdk
    关于PHPExcel上传Excel单元格富文本和时间类型读取数据问题
    负载均衡集群总结(Haproxy)
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2178622.html
Copyright © 2011-2022 走看看