Category: C#

C#中的ReferenceEquals介绍 0

C#中的ReferenceEquals介绍

当objA和objB是同样实例的时候(或者都是null)会返回true,其他情况会返回false。和Equal不太相同的是这个方法是没有办法override的。所以,假如你想看两个object是否相同,然后又不确认equal是否被override了,那么应该就可以使用这个方法了。 不过有下面两种情况需要注意: 假如比较值类型,也就是说objA和objB都是值类型,我们需要在他们使用ReferenceEquals之前把他们装箱。也就是说,哪怕他们显示的是同样的值类型实例,RefrenceEquals也是返回false的,如下面这个例子所示: 它返回的值如下: 而装箱之后的结果就不一样了:...

0

C#中的GetHashCode

所谓的hash code其实主要用在一些基于hash的集合中,比如Dictionary<TKey,Tvalue>等等。一般来说,假如两个对象是相等的,那么他们的hash值也是相等的,但是反之,则不一定,也就是说两个hash值相等的对象,他们不一定相等。 需要注意的是.NET的默认的GetHashCode是不保证一定相等的,在不同的.NET版本,不同的平台上面,返回的值都有可能不同。所以,不要使用默认的这个函数来作为唯一的判断。所以,有这两点需要注意: 同样的hash值不表示他们对象是相等的。 不要把hash值保存下来,或者在不同的应用之间传递,然后使用这个值来进行判断,因为脱离了这个应用,即使同样的对象,他的hash值也是可能不同的,这和平台,进程等等都有关系。...

0

C#中的new修饰符

今天我们和大家介绍一下C#中的new修饰符,注意这个修饰符,不是我们创建class的new哦。 new修饰符的基本介绍 New 修饰符主要要在子类中,当他修饰一个方法或者成员时,就表示,我们在基类中也有同样名字的方法或者成员,这里我们相当于重新建了一个同名的方法或者成员。在调用的时候,也就会覆盖基类的调用。当然我们不加new这个修饰符,也是可以运行得,但是会在编译的时候报警告。我们来来看下面的代码: 这里,我们在基类中也有一个和父类同名的Invoke函数,假如我们这样写,在编译的时候就会出现下面这样的警告:...

0

C# 如何 override ToString方法

众所周知,在C#中所有的class和struct都会继承object类。所以,在C#中,每一个object都有一个ToString的方法,他会返回相关的string。比如我们来看一下下面这个例子: 他们的输出如下: 下面我们来看一个类,这个是一个很简单的类,他包含两个property name和Age,这里我们就overrid了ToString的函数,你可以使用任何你想要的方式来重写这个函数,只要return一个string就可以了。 调用的代码如下:...