对象比较-金旭亮.PDFVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对象比较-金旭亮.PDF

万物有序…… 对象比较 北京理工大学计算机学院 金旭亮 第一名还是第二名,影响很大的…… 在现实生活中,我们经常需要按照某种标准给事物“排 序”,比如按照考试成绩给学生排出名次。 软件世界中的“对象”是对现实生活中各种“事物”的 一种“模拟”,因此,也有对多个对象进行“排序”的 要求,这样才能更贴近于现实世界的真实场景。 要对多个对象进行排序,就必须解决两个对象间的大小 比较问题。 怎样确定对象的“大小”? • 几乎所有的编程语言,对于数值类型(比如整数或浮 点数),都已经支持大小比较。 • 但那些对于我们自己设计出来的类所创建的对象,怎 样定义它们的“大小”特性? 关键是制定出确定对象大小的比较规则! C# 中,实现了IComparable接口的对象可以相互比较大小: public interface IComparable { CompareTo ()方法用于定义对象的“比 int CompareTo(object obj); 较规则”,其返回值表明了比较结果 } int result = One.CompareTo(Other); CompareTo 方法返回值 含义 小于零 (-1) One对象小于Other对象 零 One对象等于Other对象 大于零 (1) One对象大于Other对象 如果只需要知道两个对象是否相等,而不需要知道这两个对象“谁 大谁小”,这时,可以重写Object类的Equals方法 public override bool Equals(object obj) { if (this.CompareTo(obj) == 0) 重写equals() 方法实 return true; 现对象的判等 return false; } 如果实现了CompareTo ()方法,则通常会 直接使用它来实现equals()方法的功能 重写Object.Equals方法的规则 自反性 • a.Equals(a)值为True。 (Reflexive) 对称性 • a.Equals(b)的值与b.Equals(a)一 (Symmetric) 致。 传递性 • a.Equals(b)为True ,b.Equals(c) (Transitive) 为True ,则a.Equals(c)也为True。 与null判等 • a.Equals(null)的值为False。 重写GetHashCode方法 重写了Equals方法之后,也必须重写GetHashCode 方法,否则此对象在放入 需要使用对象Hash值的对象集合(比如Hashtable)中时会出现问题。 要求: 1. 如果两个对象的比较结果相等,则每个对象的GetHashCode 方法都 必须返回相同值。 2. 对象状态未改变时,多次调用它的GetHashCode 方法,必须应该返 回相同值。 3. 为了获得最

文档评论(0)

18273502 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档