C#内建接口:IComparable

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

01

了解IComparable

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

7f07969f99f466a7a8d5cbf7700e9e5d.png

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

02

代码演示

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

19680876ae3c01a398ca15687bd7cd67.png

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

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

6743cd196c6c8835b3e15591f3524975.png

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

0db194651d332ff74d360a384b264857.png

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

本节到此结束...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

script的defer和async

我们常用的script标签,有两个和性能、js文件下载执行相关的属性:defer和async defer的含义【摘自https://developer.mozilla.org/En/HTML/Element/Script】 This Boolean attribute is set to indicate to a browser that the script is meant to be exe…

WWDC 2013 Session笔记 - Xcode5和ObjC新特性

这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览。本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS或…

难以摸透的直男脑回路......

1 你年纪不小了,该结婚了(素材来源网络,侵删)▼2 泰国小哥低成本Cos赛博朋克2077 ▼3 郑爷爷也太会了吧▼4 奇奇怪怪的知识又增加了(素材来源网络,侵删)▼5 酸奶今天7.1折(via.…

ansible备份mysql_ansible做mysql备份和安全加固

2019独角兽企业重金招聘Python工程师标准>>>1. mysql备份A patch adding nameall was added to the mysql_db module on May 12, 2015, so the recommended way to dump all databases is:# Dumps all databases to hostname.sql- mysql_db: statedump nameall target…

ICMP

ICMP是网络层协议 能反馈和解决网络层的问题 ping traceroute 转载于:https://www.cnblogs.com/YDDMAX/p/5361165.html

今晚包饺子吗?会露馅的那种......

1 让水龙头滴水流动(素材来源网络,侵删)▼2 来自干饭人的答题卷▼3 一心只想搞钱(via.银教授)▼4 奇奇怪怪的东西又增加了(素材来源网络,侵删)▼5 今晚过来吗?▼6 好…

公司僵尸帐号引发了一系列的入侵事件-细说密码强度验证的重要性

一、前言 每个公司几乎都会有一个公司的内部系统,每个员工的入职的的时候都会给开一个帐号,一般开帐号的这个人不会考虑帐号的安全性,用户名大多都是员工的姓名或者工号,密码也是姓名或者工号或者123456,如果可以输入1…

idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)

课程简介:课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值。适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群。课程概述:多线程的异步执行方式&#…

C# WPF MVVM开发框架Caliburn.Micro快速搭建③

01—启动项目打开Visual Studio创建一个名为“Caliburn.Micro.Hello”的新WPF应用程序添加对Caliburn.Micro Nuget包的引用,最新的版本是4.0.173,更新日期2021年5月9日 (2021/5/9)删除“MainWindow.xaml”并从“App.xaml”中删除StartupUri,使其如下所示…

中国院士最多的县:共走出26位院士,百位高校校长,一万名教授

全世界只有3.14 % 的人关注了爆炸吧知识本文由科研大匠(Id:keyandajiang)综合整理自学术志、网易新闻、算法与数学之美“昔孟母,择邻处,子不学,断机杼”,从孟母为了给儿子创造良好的读书环境,以…

linux下A免密码登录B

linux下A免密码登录B现在有两台linux服务器A:192.168.1.111,B:192.168.1.1121、在A(192.168.123.111)生成公钥私钥对,命令如下:ssh-keygen -t rsa -P ‘’,如图:-P表示密码&#xf…

mysql between 查询不出来_mysql的语句优化

(1)mysql避免全表扫描1、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null,不能用null作索引,任何包含null值的列都将不会被包含在索引中。即…

大开眼界!终于等到这部每一帧都是壁纸的纪录片!

全世界只有3.14 % 的人关注了爆炸吧知识中国,拥有七大水系,超过2600个自然湖泊,299.7万平方公里海洋面积。生活在陆地,周遭的一切都是被水体所包裹。但还从来没有哪一部纪录片,系统探秘过中国水下。水面之上&#xff0…

Binary Search二分法搜索C++程序

二分法基本上学计算机的都听过,但是有人不知道的就是其实二分法是减治法的思想。 所谓减治法和分治法有一个主要差别就是减治法是减去一般,就是分治之后只需要解决原问题的一半就可以了得到全局问题的解了。所以速度很快。 下面是二分法的递归程序和非递…

.NET 6新特性试用 | Nuget包验证

前言我们常常需要将.NET类库打包成Nuget包,以便多个项目公用。一旦修改类库,尽管代码可以运行,并成功打包成新版本,看起来一切正常,但是你无法保证该更改是安全且兼容的。而在.Net 6中,提供了包验证工具&am…

SSIS package 更新 variable

在Package中声明一个variable,在package运行的过程中,SSIS如何update Variable? 第一种方法:使用 Script Task 来更新Variable的值 1,创建一个variable ,VariableName是VarCode,并将变量传递到脚…

socket第三方库 AsyncSocket(GCDAsyncSocket)

为什么80%的码农都做不了架构师?>>> Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,Socket一定包含了通信的双发&#xff0c…

想给男友一个惊喜,没想到是这样的结局......

1 想给男友一个惊喜(via.澎湃新闻)▼2 花10w买了副画(素材来源网络,侵删)▼3 台北温馨一幕▼4 把土豆切成丁(素材来源网络,侵删)▼5 你为何如此自信?(素材…

Android之怎么隐藏EditText光标和自动显示键盘

不废话,先爆照 让EditText不现实光标 关键代码: android:focusable="true" android:focusableInTouchMode="true" 写这个父视图里面 下面是全部代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"…

基于事件驱动架构构建微服务第14部分:查询API

原文链接&#xff1a;https://logcorner.com/building-micro-services-through-event-driven-architecture-part14-query-api/在本教程中&#xff0c;我将展示如何构建一个查询API&#xff0c;使用命令查询职责分离(CQRS)模式在微服务架构中实现查询。读取模型的目标是构建一个…