\

Školení Návrhové vzory, OOP a UML


 Thursday, September 23, 2004
Druhá malá programátorská hádanka na tento týden

Dokážete (bez spuštění programu) poznat, v čem bude provádění tohoto kódu z hlediska "selského programátorského rozumu" podivné a proč?

using

System;

namespace

ConsoleApplication24

{

public class Class1

{

public static void Calculate( int number)

{

}

}

public class Class2: Class1

{

public static void Calculate( long number)

{

}

}

class Test

{

[STAThread]

static void Main( string []args)

{

Class2.Calculate(

int .MinValue);

}

}

}



Thursday, September 23, 2004 3:30:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [13]  Programátorské hádanky


Tuesday, July 19, 2005 11:01:35 AM (Central Europe Standard Time, UTC+01:00)
Z obou přetížených metod se vybere ta z typem "long". Zase za tak podivné to ovšem nepovažuji s ohledem na implicitní přetypování int na long.
Tuesday, July 19, 2005 11:01:35 AM (Central Europe Standard Time, UTC+01:00)
nepíše se "z typem", ale "s typem". :)
Tuesday, July 19, 2005 11:01:35 AM (Central Europe Standard Time, UTC+01:00)
myslim ze tu ide skvor o to ze nejde o pretazenie
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
Nebude na tom prekladac brecet? Aspon warningem? neco jeko Class2.Calculate hides Class1.Calculate?
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
nešlo by pro větší přehlednost používat ve výpisech odsazování?

p.s. <a href="odkaz">fungují v komentářích odkazy?</a>
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
No nejsem zas tak dobrej jako nekteri z Vas, nezkousel jsem to spoustet. Ale rekl bych ze je ze selskeho rozumu prehlednejsi pouzit Class1.Calculate(int.MinValue)
nebo si aspon myslim, ze tohle takhle to ma stejny efekt... Protoze Class2 dedi z ...
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
ako som uz povedal, nejde tu o ZIADNE pretazenie kedze su to staticke metody v 2 roznych triedach. deklaracia:
Class2.public static void Calculate(INT number){}
by rovnako bola uplne vpohode a volal by sa zas ten isty kod...
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
Vyvola sa Calculate z triedy Class2, pretoze medzi int a long je implicitna konverzia.

Najprv je snaha skombinovat volanie metody s implementaciou v triede Class2, co je vdaka implicitnej konverzii mozne a preto je vyvolana. Az keby nebolo mozne ...
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
Ano, hned prvni odpoved od Velurexe stejne jako Andrejova byla spravna.
Pro by to nekoho mohlo prekvapit?
Kdyz pouzivate "zdedene" staticke metody, zda se, ze maji zcela stejnou prioritu jako staticke metody deklarovane v odvozene ...
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
To DGX: Ano, slo by pouzivat odsazovani. Zkousim ted ruzne editory a WB Editor po zkopirovavani kodu z VS.NET odsazeni nezachova. Priste jej ale jiz doplnim, diky za pripominku.
Ad odkazy: Je mozne zadat primo URL
http://odkaz
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
To MaD)
Kompilator kricet nebude - ke skryti metody nedochazi.
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
Ad formatovani:
http://www.manoli.net/csharpformat/
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
To Tom: Diky za tip, ten nastroj je vyborny.
Comments are closed.