Zdar. V 17 kapitole knihy Visual C# Krok za krokem 2008 jsem narazil na pro mě zajímavý kus kódu. Problém je že nechápu proč jsou v dané třídě dvě metody se stejnou signaturou, z nichž jedna je definována jako override metody nacházející se v třídé Object. Jde o to kdy je volána ta a kdy ta metoda.
Přijímají jiné parametry (jedna přijíma typ Jméno, druhá Objekt). Proč tedy není jednoduše přetížená? Proč je tam to ovveride? (Pochopil bych to kdyby volala základní implementaci "base" ale to nevolá)
namespace Indexery
{
struct Jméno
{
public Jméno(string text)
{
this.jméno = text;
}
public string Text
{
get { return this.jméno; }
}
public override int GetHashCode()
{
return this.jméno.GetHashCode();
}
public override bool Equals(object další)
{
return (další is Jméno) && Equals((Jméno)další);
}
public bool Equals(Jméno další)
{
return this.jméno == další.jméno;
}
private string jméno;
}
}
Předem díky všem co mi tu neustále osvětlují pro ně trivialní otázky.