Jul 23
2009
Felüldefiniálások
Filed Under (elmélet, kód) by nameless on 23-07-2009
ToString() Equals() GetHashCode() felüldefiniálása:
using System;
namespace Program
{
class Person
{
public string fName;
public string lName;
public sbyte personAge;
public Person(string firstName, string lastName, byte age)
{
fName = firstName;
lName = lastName;
personAge = (sbyte)age;
}
public Person() { }
//fölülírjuk a ToStringet
public override string ToString()
{
string myState;
myState = String.Format("[First Name: {0}; Last Name: {1}; Age: {2}]", fName, lName, personAge);
return myState;
}
//felüldefiniáljuk az Equalst
public override bool Equals(object obj)
{
if (obj is Person && obj != null)
{
Person temp;
temp = (Person)obj;
if (temp.fName == this.fName && temp.lName == this.lName && temp.personAge == this.personAge)
{
return true;
}
else
{
return false;
}
}
return false;
}
//visszaadja a ToString() érték alapján kiszámított hashértéket.
public override int GetHashCode()
{
return this.ToString().GetHashCode();
}
}
class EntryPoint
{
public static void Main()
{
//Az Equals() és a GetHashCode() teszteléséhez
//ezeknek egyezniük kell.
var p1 = new Person("Homer", "Simpson", 50);
var p2 = new Person("Homer", "Simpson", 50);
//Az objektum szöveges verziójának beolvasása
Console.WriteLine("p1.ToString() {0}",p1.ToString());
Console.WriteLine("p2.ToString() {0}", p2.ToString());
//a felülbírált Equals() tesztelése
Console.WriteLine("p1 = p2?: {0}", p1.Equals(p2));
//a hashérték tesztelése.
Console.WriteLine("Same hash codes?: {0}", p1.GetHashCode() == p2.GetHashCode());
Console.WriteLine();
//A p2 korának módosítása, és ismételt tesztelése.
p2.personAge = 45;
Console.WriteLine("p1.ToString() {0}", p1.ToString());
Console.WriteLine("p2.ToString() {0}", p2.ToString());
Console.WriteLine("p1 = p2?: {0}", p1.Equals(p2));
Console.WriteLine("Same hash codes?: {0}", p1.GetHashCode() == p2.GetHashCode());
Console.WriteLine();
Console.ReadKey();
}
}
}
