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
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    《编译原理》-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法
    8 张脑图入门 JavaScript
    Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
    Spring boot 多模块项目 + Swagger 让你的API可视化
    Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版
    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)
    SSM 项目从搭建爬坑到 CentOS 服务器部署
    LeetCode
    有趣的位运算
    记一次向maven中央仓库提交依赖包
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2178622.html
Copyright © 2011-2022 走看看