这节开一个新的系列:C#内建接口。主要给大家讲一下C#内部给我们定义的一些常用的接口,以及它们是怎么使用的。基本上一节讲一个吧,本节先从IComparable开始。

01

了解IComparable

一般的,值类型的数据比较大小,就是看它俩的值,这种比较很单纯,但是也有某些情况,我们需要对引用类型进行比较,也就是说比较两个对象谁大谁小,对象之间的比较其实就是根据业务需求,比较其属性,为了统一一个对象比较之间的规范,C#中定义了一个名为IComparable的接口,顾名思义,继承了这个接口的对象都是可比较的嘛,那下面就来看看这个接口的成员吧:

这个接口还是很简单的 ,就一个CompareTo方法,参数是可空类型的任意对象,返回一个int数字,意思就是比较的结果如果是小于,则返回-1,等于返回0,大于则返回1,或者根据您的业务,返回任何数字都是可以。

02

代码演示

下面从代码中演示一下它的使用:

以上是一个矩形类,有宽和高两个属性,比较矩形大小就是比较其面积大小,所以我继承了IComparable接口,并将面积比较代码写在了里面,具体代码很简单,也就不做解释了,但大家需要注意一点,因为参数是object类型,并且引用类型可以为空,所以不要忘记一些比较的参数检查。

下面用一个控制台程序为大家做一下结果演示:

上图代码中我创建了两个对象,一个是12*12的samll,一个是24*24的big,输出结果为:

大家也许注意到了我注释掉的代码,string也是实现了这个接口的,有兴趣的同学可以自己写写代码测试一下,字符串之间是根据其字符的ASCII表位置来比较的,如果第一个字符相同,则比较第二个,这样以此类推。

本节到此结束...

C#内建接口:IComparable相关推荐

  1. C#内建接口:IEnumerable

    这节讲一下接口IEnumerable. 01 什么是Enumerable 在一些返回集合数据的接口中,我们经常能看到IEnumerable接口的身影.那什么是Enumerable呢?首先它跟C#中的e ...

  2. OpenGL基础39:GLSL内建变量与接口块

    GLSL有几个以gl_为前缀的变量(内建变量),它们在着色器中能直接获取和使用,并且都有着很重要的意义,gl_Position 和 gl_FragCoord 就是两个典型的内建变量 一.顶点着色器变量 ...

  3. django 1.8 官方文档翻译: 3-4-2 基于类的内建通用视图

    基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式. Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历 ...

  4. Activiti工作流内建数据库表分析

    2019独角兽企业重金招聘Python工程师标准>>> 如上图所示:activiti 5.22.0 版内建25张表,下面我将简要分析下这些表的作用. 1.表分类浅析 activiti ...

  5. 树莓派第三代跨越发展,采用64位处理器内建WiFi及蓝牙

    Raspberry Pi(树莓派)前不久在Raspberry Pi Foundation基金会成立四周年纪念日之际对外发布了新产品Model 3,其定价仍然在35美元(30英镑),和上一版Raspbe ...

  6. 怎么测试服务器端口是否对外开放_从零开始内建你的安全测试流程

    一. 安全测试的意义 安全问题,没发生的时候我们可以侥幸,一旦发生生产安全问题,对很多公司来说可能就是黑天鹅事件了.平台的安全,是我们测试中不可舍弃的一环,而且需要长期持续的关注. 二. 从哪里入手 ...

  7. django 1.8 官方文档翻译: 3-4-2 内建显示视图

    Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质. 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html ...

  8. 从零开始内建你的安全测试流程

    一. 安全测试的意义 安全问题,没发生的时候我们可以侥幸,一旦发生生产安全问题,对很多公司来说可能就是黑天鹅事件了.平台的安全,是我们测试中不可舍弃的一环,而且需要长期持续的关注. 二. 从哪里入手 ...

  9. [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

最新文章

  1. 2016年印度光伏设备市场将猛增2倍达4GW以上
  2. java 无名类做参数_说说你知道的几种主要的JVM参数
  3. mysql_fetch_bit_mysql_fetch_array()
  4. 当初阿里巴巴、百度、美团都差点错过的架构,现在用起来真香!
  5. Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域
  6. JUC:ReentrantLock互斥锁
  7. Echarts数据可视化开发参数配置全解
  8. python制作词典软件_推荐一款非常好用的一键生成数据字典工具
  9. 2D人脸识别之Camera篇
  10. 抖音小店都有哪些类目
  11. 【408预推免复习】计算机网络(谢希仁第七版)第三章——数据链路层
  12. LeaRun快速开发平台,.Net Core加持,功能更全面
  13. Java~基于fluent-hc快速构建Http请求,结合failsafe实现异常重试
  14. pwn基础之ctfwiki-栈溢出-基本ROP-ret2text
  15. 用JAVA 创建自己的 A4 打印语言
  16. 目前中国计算机水平如何,中国现在计算机水平现状是怎样的
  17. 怎么用计算机的计算器转换进位制,计算机进制换算(进制转换计算器)
  18. 谷歌浏览器崩溃、电脑版微信,vscode打不开网页
  19. 尚硅谷+黑马程序员MongoDB视频学习笔记(一)
  20. DirectX学习笔记(十五):粒子系统实现

热门文章

  1. HDU - 4734 F(x) (2013成都网络游戏,数字DP)
  2. 怎么快速了解自己的MySQL服务器?
  3. 《转》CXF WebService 开发文档-目录索引
  4. C#读写txt文件的两种方法介绍
  5. GDI+ 设置文本对齐方式
  6. SiteMapCreator 发布 (Open Source)
  7. SQLServer2008-镜像数据库实施手册(双机)SQL-Server2014同样适用
  8. C# 使用int.TryParse,Convert.ToInt32,(int)将浮点类型转换整数时的区别
  9. (转载)9个主流的开源许可协议[整理]
  10. 页面闲置一段时间后,跳转