摘要:
本节覆盖了以下知识点:一、Object.Equals()方法;二、“==”,“!=”运算符重载;三、IEquatable<T> 接口。一、重写Equals方法。众所周知,Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等。Object的Equals的默认实现比较的是两个对象的引用等同性。而Object的派生类ValueTpye重写了Equals方法,它比较的是两个对象的逻辑等同性。也就是说,在C#里,引用类型的默认Equals版本关注的是引用等同性,而值类型关注的是逻辑等同性。当然,这并不总能满足我们的要求。所以每当我们更在意引用类型的逻辑等同性的时候,我 阅读全文
摘要:
1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较。 排序:在集合类中,对集合类中的实体进行排序。排序基于的算法基于实体类提供的比较函数。 基本型别都提供了默认的比较算法,如string提供了按字母进行比较,int提供了按整数大小进行比较。2:IComparable和IComparer 这两个接口上一日记已经介绍过,现在用一实例再次讲解一次 当我们创建了自己的实体类,如Student,默认想要对其按照年龄进行排序,则需要为实体类实现IComparable接口。 class Student:IComparable { public string Name { ge... 阅读全文
摘要:
在默认情况下,对象的Equals(object o)方法(基类Object提供),是比较两个对象变量是否引用同一对象。我们要必须我自己的对象,必须自己定义对象比较方式。IComparable和ICompare 接口是.net framework 中比较对象的标准方式,这两个接口之间的区别如下:1. IComparable 在要比较的对象的类中实现,可以比较该对象和另一个对象。2.IComparer 在一个单独的类中实现,可以比较任意两个对象。一般情况下,我们使用 IComparable 给出类的默认比较代码,使用其他类给出非默认的比较代码。一、IComparable提供了一个方法int Com 阅读全文
摘要:
一、类型比较1.GetType() 方法,所有的类都从system.object 中继承了这个方法,这个方法和typeof()运算符一起使用,就可以确定对象的类型if(myObj.GetType()) == typeof(MyClass){ //myObj是对象名,MyClass是一个类名}2. is运算符(平时用得多,不再叙述)二。值比较1.运算符重载2.使用 IComparable 和 IComparer 接口。它们可以用标准的方式定义比较对象的过程。也是对集合中的对象排序的一种绝佳方式。转自:http://www.cnblogs.com/eagle1986/archive/2012/02 阅读全文