C# Equals的重写

using System;
using System.Collections.Generic;
using System.Text;

namespace Equal
{
    using System;

class Test
    {
        public static void Main()
        {
            Person p1 = new Person("A", 1);
            Person p2 = new Person("A", 1);

if (p1.Equals (p2))
            {
                Console.WriteLine("true");
            }
            else
            {
                Console.WriteLine("false");
            }
        }

}
    class Person
    {
        private string name;
        private int age;

public Person()
        {
            this.name = "";
            this.age = 0;
        }
        public Person(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

//重写Equals方法

public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return false;
            }
            if ((obj.GetType().Equals(this.GetType())) == false)
            {
                return false;
            }
            Person temp = null;
            temp = (Person)obj;

return this.name.Equals(temp.name) && this.age.Equals(temp.age);

}

//重写GetHashCode方法(重写Equals方法必须重写GetHashCode方法,否则发生警告

public override int GetHashCode()
        {
            return this.name.GetHashCode() + this.age.GetHashCode();
        }
    }

}

时间: 2024-11-11 16:34:14

C# Equals的重写的相关文章

java基础中的 equals关键字 重写

equals (public boolean equals(Object obj)) 指示其他某个对象是否与此对象"相等". equals 方法在非空对象引用上实现相等关系: 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true. 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true. 传递性:对于任何非空引用值 x.y 和 z,如果 x.equals(y) 返回 true,并且

equals的重写;

判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这时我们需要重写equals()方法. public boolean equals(Object obj) { if(this == obj) return false; if(obj == null) return false; if(getClass() != obj.getClass() ) return false; MyClass ot

java中的equals()方法重写

如何java中默认的equals方法跟实际不符的话,需要重写equals方法.例如: public class TestEquals {public static void main(String[] args) { Cat c1 = new Cat (1,2,3); Cat c2 = new Cat (1,2,3); System.out.println(c1==c2); System.out.println(c1.equals(c2));}} class Cat{ int color ;  

==,equals区别和equals方法重写

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号(==),比较的是他们的值.  2.复合数据类型(类)    当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义

java学习--equals()及其重写

/* String和String Buffer(在其保存) 类String中方法equals()--进行了重写和object类中的equal(); */ class A { public int i; public A(int i) { this.i=i; } public boolean equals(Object obj) //内容一样,内存不一样,返回true,重写(三重) { //obj为形参,指针, A aa=(A)obj; //父类调用子类特有的成员.先写需要aa=bb(先父类指向子

面试必备之为什么重写equals必须重写hashcode

印象中是来自 https://github.com/Snailclimb/JavaGuide Object.hashcode的通用约定为: 1.在一个应用执行期间,如果一个对象的equals方法做比较所用到的信息没有被修改的话,那么对该对象调用hashCode方法多次,它必须始终如一地返回同一个证书:在同一个应用程序的多次执行过程中,这个证书可以不同,即这个应用程序这次返回的证书与下一次执行返回的证书可以不一致.2.如果两个对象根据equals(Object)方法是相等的,那么调用者两个对象中任

为什么重写equals还要重写hashcode

参考回答: HashMap中,如果要比较key是否相等,要同时使用这两个函数!因为自定义的类的hashcode()方法继承于Object类,其hashcode码为默认的内存地址,这样即便有相同含义的两个对象,比较也是不相等的.HashMap中的比较key是这样的,先求出key的hashcode(),比较其值是否相等,若相等再比较equals(),若相等则认为他们是相等的.若equals()不相等则认为他们不相等.如果只重写hashcode()不重写equals()方法,当比较equals()时只

equals方法重写

public class Demo{ public static void main(String[] args){ Animal a1 = new Tiger(); Animal a2 = new Fish(); Animal a3 = new Tiger(); a1.name = "aaa"; a1.age = 12; a1.type ="tiger"; a2.name = "aaa"; a2.age = 12; a2.type ="

17 equals方法重写

package com.bowen.dong; /** * * @author bw * */ public class Test { public static void main(String[] args) { String s1 ="sabc"; String s2 ="sabc"; Test t1 = new Test(); Test t2 = new Test(); if(t1.equals(t2)) { System.out.println("