Skuska 25.1.2010
Napsal: 26. 1. 2010 09:06
Cele zadanie si nepamatam, co si ale pamatam je, ze sa menili niektore otazky.
Co spravi nasledujuci program:
spadne na L1, spadne na L2, spadne na L3, neprelozi sa, vypise "System.Object" (spadne na L3: Attempted to access an element as a type incompatible with the array)
Zjednodusila sa otazka na implementovanie niecoho:
mate dopisat telo triedy foo tak, aby metoda m() vzdy vracala 0:
spravne riesenie mohlo byt napr
dalej bolo nieco ako
co potom urobia nasledujuce riadky:
(moznosti boli true, false, neskompiluje sa)
Tu si treba uvedomit, ze getType ziska presny typ premennej (nezohladnuje dedicnost) a 'is' zistuje ci sa da premenna pretypovat na typ bez vyhodenia exception (teda zohladnuje dedicnost). (true,true,false,true,false,true)
Ako je to s riadkom "bbcc is CC<BB<int>>" neviem dobre vysvetlit.
Nieco o tom, co plati/neplati o strukturach.
Chytak bol, ze struktury je mozne vytvorit aj na halde (zabalene v triede).
A pre takych ako ja: struktury dedia len od interfacov a classy sa nededia od struktur a preto struktury nemaju virtualne metody.
Dalsia novinka bola, o triede streamWriter. Ten musi byt explicitne flushnuty (metoda close/flush) aby sa vyprazdnilo to co ma v buffri. Otazka bola, ci je mozne rozsirit tuto triedu tak, aby sa buffer sam flushol ked sa streamWriter finalizuje garbage collectorom.
Potom tam bolo viacero moznosti, spravna bola:
"nie, lebo finalizery sa nevykonavaju v pevnom poradi"
A na konci bola otazka suvisiaca s extension metodami.
mame kod:
a otazka bola, ako sa ma kod doplnit aby to fungovalo a vypisalo 2 (predpoklada sa ze TimeSpan ma polozku hours verejnu). Na vyber bolo 5 moznosti:
jedna ze to nejde,
jedna zalozena na tom, ze int sa implicitne pretypuje na triedu a na nej sa zavola metoda
dalsia zalozena na tom istom, ale islo o pretypovanie na strukturu
moznost s extension metodou, ktora vyuzivala double
moznost s extension metodou, ktora vyuzivala int - tato bola spravna
Kto si pamatate viac, pls spresnite.
Co spravi nasledujuci program:
Kód: Vybrat vše
public static Main(){
L1 string [] pole1 = { "helo" };
L2 object [] pole2 = pole1;
L3 pole2[0] = new Object();
Console.WriteLine(pole2[0]);
}
Zjednodusila sa otazka na implementovanie niecoho:
Kód: Vybrat vše
Interface I<T>{
T m();
}
class Foo: I<int>, I<double>{
}
spravne riesenie mohlo byt napr
Kód: Vybrat vše
class Foo: I<int>, I<double>{
double I<double>.m(){return 0;} //tu sa 'public' NEPISE
public int m() {return 0;} //tu nezabudnite 'public' ;)
}
Kód: Vybrat vše
BB<int> bb = new CC<int>();
BB<CC<int>> bbcc= new CC<CC<int>>();
Kód: Vybrat vše
Console.WriteLine(bb is BB<int>);
Console.WriteLine(bb is CC<int>);
Console.WriteLine(bbcc is CC<BB<int>>);
Console.WriteLine(bbcc is BB<CC<int>>);
Console.WriteLine(bb.GetType() == typeof(BB<int>));
Console.WriteLine(bb.GetType() == typeof(CC<int>));
Tu si treba uvedomit, ze getType ziska presny typ premennej (nezohladnuje dedicnost) a 'is' zistuje ci sa da premenna pretypovat na typ bez vyhodenia exception (teda zohladnuje dedicnost). (true,true,false,true,false,true)
Ako je to s riadkom "bbcc is CC<BB<int>>" neviem dobre vysvetlit.
Nieco o tom, co plati/neplati o strukturach.
Chytak bol, ze struktury je mozne vytvorit aj na halde (zabalene v triede).
A pre takych ako ja: struktury dedia len od interfacov a classy sa nededia od struktur a preto struktury nemaju virtualne metody.
Dalsia novinka bola, o triede streamWriter. Ten musi byt explicitne flushnuty (metoda close/flush) aby sa vyprazdnilo to co ma v buffri. Otazka bola, ci je mozne rozsirit tuto triedu tak, aby sa buffer sam flushol ked sa streamWriter finalizuje garbage collectorom.
Potom tam bolo viacero moznosti, spravna bola:
"nie, lebo finalizery sa nevykonavaju v pevnom poradi"
A na konci bola otazka suvisiaca s extension metodami.
mame kod:
Kód: Vybrat vše
class TimeSpan{
public TimeSpan(int hours, int minutes, int seconds){....}
}
...
public static void Main{
TimeSpan foo = 2.Hours();
Console.WriteLine( foo.hours);
}
jedna ze to nejde,
jedna zalozena na tom, ze int sa implicitne pretypuje na triedu a na nej sa zavola metoda
Kód: Vybrat vše
Hours(){
return new TimeSpan((int)this,0,0);
}
moznost s extension metodou, ktora vyuzivala double
moznost s extension metodou, ktora vyuzivala int - tato bola spravna
Kto si pamatate viac, pls spresnite.