C#内建接口:IComparable
这节开一个新的系列: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相关推荐
- C#内建接口:IEnumerable
这节讲一下接口IEnumerable. 01 什么是Enumerable 在一些返回集合数据的接口中,我们经常能看到IEnumerable接口的身影.那什么是Enumerable呢?首先它跟C#中的e ...
- OpenGL基础39:GLSL内建变量与接口块
GLSL有几个以gl_为前缀的变量(内建变量),它们在着色器中能直接获取和使用,并且都有着很重要的意义,gl_Position 和 gl_FragCoord 就是两个典型的内建变量 一.顶点着色器变量 ...
- django 1.8 官方文档翻译: 3-4-2 基于类的内建通用视图
基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式. Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历 ...
- Activiti工作流内建数据库表分析
2019独角兽企业重金招聘Python工程师标准>>> 如上图所示:activiti 5.22.0 版内建25张表,下面我将简要分析下这些表的作用. 1.表分类浅析 activiti ...
- 树莓派第三代跨越发展,采用64位处理器内建WiFi及蓝牙
Raspberry Pi(树莓派)前不久在Raspberry Pi Foundation基金会成立四周年纪念日之际对外发布了新产品Model 3,其定价仍然在35美元(30英镑),和上一版Raspbe ...
- 怎么测试服务器端口是否对外开放_从零开始内建你的安全测试流程
一. 安全测试的意义 安全问题,没发生的时候我们可以侥幸,一旦发生生产安全问题,对很多公司来说可能就是黑天鹅事件了.平台的安全,是我们测试中不可舍弃的一环,而且需要长期持续的关注. 二. 从哪里入手 ...
- django 1.8 官方文档翻译: 3-4-2 内建显示视图
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质. 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html ...
- 从零开始内建你的安全测试流程
一. 安全测试的意义 安全问题,没发生的时候我们可以侥幸,一旦发生生产安全问题,对很多公司来说可能就是黑天鹅事件了.平台的安全,是我们测试中不可舍弃的一环,而且需要长期持续的关注. 二. 从哪里入手 ...
- [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用...
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
最新文章
- 2016年印度光伏设备市场将猛增2倍达4GW以上
- java 无名类做参数_说说你知道的几种主要的JVM参数
- mysql_fetch_bit_mysql_fetch_array()
- 当初阿里巴巴、百度、美团都差点错过的架构,现在用起来真香!
- Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域
- JUC:ReentrantLock互斥锁
- Echarts数据可视化开发参数配置全解
- python制作词典软件_推荐一款非常好用的一键生成数据字典工具
- 2D人脸识别之Camera篇
- 抖音小店都有哪些类目
- 【408预推免复习】计算机网络(谢希仁第七版)第三章——数据链路层
- LeaRun快速开发平台,.Net Core加持,功能更全面
- Java~基于fluent-hc快速构建Http请求,结合failsafe实现异常重试
- pwn基础之ctfwiki-栈溢出-基本ROP-ret2text
- 用JAVA 创建自己的 A4 打印语言
- 目前中国计算机水平如何,中国现在计算机水平现状是怎样的
- 怎么用计算机的计算器转换进位制,计算机进制换算(进制转换计算器)
- 谷歌浏览器崩溃、电脑版微信,vscode打不开网页
- 尚硅谷+黑马程序员MongoDB视频学习笔记(一)
- DirectX学习笔记(十五):粒子系统实现
热门文章
- HDU - 4734 F(x) (2013成都网络游戏,数字DP)
- 怎么快速了解自己的MySQL服务器?
- 《转》CXF WebService 开发文档-目录索引
- C#读写txt文件的两种方法介绍
- GDI+ 设置文本对齐方式
- SiteMapCreator 发布 (Open Source)
- SQLServer2008-镜像数据库实施手册(双机)SQL-Server2014同样适用
- C# 使用int.TryParse,Convert.ToInt32,(int)将浮点类型转换整数时的区别
- (转载)9个主流的开源许可协议[整理]
- 页面闲置一段时间后,跳转