C#中定义结构时如何重写equals方法

如题所述

案例:
//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();
}
}

}
温馨提示:答案为网友推荐,仅供参考