Tjena därför att det är metoderna i interfacet som körs , Nä.. hmmm, jag tyckte bara att det borde valt metoden med "bäst" signatur. Men det gör den ju helt uppenbart inte...IComparer och egna typer
Jo, jag har ett liten undran. Om jag har t.ex. en egen Klass MyClass och sen har jag en MyClassComparer som implementerar IComparer, då skulle jag i objektorienteringens namn vilja kunna skriva två metoder
public int Compare(MyClass a, MyClass b)
och
public int Compare(object a, object b)
Men om jag har liknande kod:
MyClass[] myclassarray=GetArray();
Array.Sort(myclassarray, new MyClassComparer());
så kör den alltid Compare med object,object trots att båda objekten är av typen MyClass. Jag tycker att Compare(MyClass,MyClass) borde köras, eller?
Nån som kan förklara varför det är på detta sättet?Sv: IComparer och egna typer
och det finns ingen "Compare(MyClass a, MyClass b)" metod i IComparer interfacet...
Array.Sort vet ju bara den ska använda en klass som implementerar icomparer , dvs. den vet att det finns en "Compare(object,object)" metod att anropa..
Array.Sort har ju ingen vetskap om att du även har pillat in en egen metod i din comparer..
//RogerSv: IComparer och egna typer
Nåja, får väl ha en massa kollar i min Compare(object, object) istället...