C#比较两个对象是否相等_第1页
C#比较两个对象是否相等_第2页
C#比较两个对象是否相等_第3页
C#比较两个对象是否相等_第4页
C#比较两个对象是否相等_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#比较两个对象是否相等using System;using System.Collections.Generic;using System.Text; namespace ObjectCompare    /-    / <summary>    / 圆心    / </summary>    publ

2、ic struct CircleCenter            public double x;        public double y;         class Circle : IComparable, 

3、;IComparable<Circle>, IEquatable<Circle>            public double Radius = 0;   /半径         public CircleCenter center; /圆心  

4、60;      /实现IComparable接口定义的方法        /-        public int CompareTo(object obj)                

5、;    if (!(obj is Circle)                throw new ArgumentException("只能比对Cirlce对象");            return&#

6、160;CompareTo(obj as Circle);                 /实现IComparable<T>接口定义的方法        /-        public int CompareTo(Circl

7、e other)                    double ret = Math.Abs(other.Radius - this.Radius);            if (ret &l

8、t; 1e-3)                return 0;            if (other.Radius < this.Radius)         &#

9、160;      return 1;            return -1;                 /覆盖Object类的GetHashCode方法      &#

10、160; /-        public override int GetHashCode()                    /整数部分与小数点后3位相同的对象生成相同的哈希值        

11、;    return (int)(Radius * 1000);                 /重写Object类的Equals方法        /-        public overri

12、de bool Equals(object obj)                    if (this.CompareTo(obj) = 0)                

13、return true;            return false;                 /实现IEquatable<Circle>接口定义的方法        /-  

14、      public bool Equals(Circle other)                    return this.CompareTo(other) = 0;        &

15、#160;       /重载相关的运算符        /-        public static bool operator =(Circle obj1, Circle obj2)         &#

16、160;          return obj1.Equals(obj2);                 /-        public static bool operator !=(Circle&#

17、160;obj1, Circle obj2)                    return !(obj1.Equals(obj2);                  /-  

18、0;     public static bool operator >(Circle obj1, Circle obj2)                    if (obj1.CompareTo(obj2) > 0) &#

19、160;              return true;            return false;                 /- 

20、       public static bool operator <(Circle obj1, Circle obj2)                    if (obj1.CompareTo(obj2) < 

21、0)                return true;            return false;                

22、0;/-        public static bool operator <=(Circle obj1, Circle obj2)                    if (obj1.CompareTo(obj2) 

23、;< 0) | (obj1.CompareTo(obj2) = 0)                return true;            return false;      

24、;           /-        public static bool operator >=(Circle obj1, Circle obj2)               

25、0;    if (obj1.CompareTo(obj2) > 0) | (obj1.CompareTo(obj2) = 0)                return true;           

26、; return false;              using System;using System.Collections.Generic;using System.Text; namespace ObjectCompare    class Program        

27、60;   static void Main(string args)                    / 测试数据1:100.1和100.9            / 测试数据2:100.01

28、和100.01            Circle circle01 = new Circle  Radius = 100.01             Circle circle02 = new Circle 

29、0;Radius = 100.01              /测试覆盖的方法            Console.WriteLine("circle01.GetHashCode()结果:" + circle01.GetHashCode();    

30、;        Console.WriteLine("circle02.GetHashCode()结果:" + circle02.GetHashCode();             Console.WriteLine("circle01.CompareTo(circle02)结果:" + circle01.Comp

31、areTo(circle02);            Console.WriteLine("circle01.Equals(circle02)结果:" + circle01.Equals(circle02);             / 测试重载的运算符    

32、60;       bool bool01 = circle01 = circle02;            Console.WriteLine("circle01 = circle02判断结果:" + bool01.ToString();     

33、0;       bool bool02 = circle01 != circle02;            Console.WriteLine("circle01 != circle02判断结果:" + bool02.ToString();     

34、60;       bool bool03 = circle01 >= circle02;            Console.WriteLine("circle01 >= circle02判断结果:" + bool03.ToString();    &#

35、160;        Console.WriteLine("/");             /以下测试Circle对象数组的排序功能            Circle circles = new Circle10;

36、  /创建Circle对象数组             Random random = new Random();             for (int i = 0; i < 10; i+)                            circlesi 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论