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,一经查实,立即删除!

相关文章

链表之删除单链表倒数第K个节点

删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路: 给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1、2、3、4、5、6 K值是2,链表的总长度是6,要得倒数第二个数的值,前面就有6-2=4个的值,如果头结点往下移,移到…

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.…

数论概论(Joseph H.Silverman) 习题 39.1 $\sqrt{3}$和$\sqrt{5}$的连分数展开中的重复现象...

计算$\sqrt{3}$和$\sqrt{5}$的连分数中的前10项. 解:\begin{align*} \sqrt{3}1\dfrac{1}{\dfrac{1}{\sqrt{3}-1}}\end{align*}\begin{align*} \sqrt{3}1\dfrac{1}{1\dfrac{1}{\dfrac{1}{\dfrac{\sqrt{3}-1}{2}}}}\end{align*}\begin{align*} \sqrt{3}1\dfrac{1}{1\dfrac{1}{2\d…

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…

链表之删除双链表倒数第K个节点

链表之删除双链表倒数第K个节点 题目: 链表之删除双链表倒数第K个节点 思路: 之前写过 http://blog.csdn.net/u011068702/article/details/50280099(链表之删除单链表倒数第K个节点),思路是一样的,如果不知道,你可以参考下 代码实现: package com.chenyu.zuo.link…

如何让代码段只运行在 Debug 模式下 ?

咨询区 Ronnie Overby我的 asp.net core 项目需要访问一个站外的 api 接口,双方协商通过api参数来约定当前请求是 测试 还是 正式, 目前的做法就是在测试环境中放开测试代码,在发布环境再注释掉这段代码,作为极客,我想知道有什么极…

ICMP

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

(转)svn检出的时候报 Unable to connect to a repository at URL错误

背景:1. SVN服务器:VisualSVN-Server-2.5.5;2. SVN客户端:TortoiseSVN-1.7.6.22632-x64-svn-1.7.4.msi; 在SVN服务器上,新建一个数据仓库aaa,用户ABC拥有读写权限。现象:1.…

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

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

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

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

链表之删除链表中间节点

题目: 链表之删除链表中间节点 思路: 方法1: 我们先得到链表的长度,如果是奇数的话加一除以2,如果是偶数直接除以二, 得到的长度,然后从头结点开始遍历得到的长度前一个节点,然后把它删除 方法2: 比如链表是1 、2 删除节点1 比如链表是1 、2、3 删除节点2 比如…

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,使其如下所示…

静态成员变量和静态成员函数(static)

数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存…

中国院士最多的县:共走出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值的列都将不会被包含在索引中。即…

链表之删除链表a/b处的节点

题目: 删除链表a/b处的节点 比如链表1、2、3、4、5 如果a/b=r; 如果0<r<1/5;删除节点1 如果1/5<r<2/5;删除节点2 如果2/5<r<3/5;删除节点3 如果3/5<r<4/5;删除节点4 如果4/5<r<5/5;删除节点5 思路: 得到我们需要删除链表的第几个的值,假设…