Poznáváme C# a Microsoft.NET 18. díl – indexery

Diskuze čtenářů k článku

avatar
24. 11. 2007 12:58

Programovou oflline verzi seriálu naleznete na http://poznavame-c-msnet.wz.cz/

Souhlasím  |  Nesouhlasím  |  Odpovědět
Michal Aichinger  |  06. 05. 2005 23:22

zdravim,
tak si lehce hraju a mam v tride dve prommene typu ArrayList a chci k oboum pristupovat pres indexer. Jak se to zapise? vsude jsou priklady jen s jednou promennoou a o tom dalsim se mlci

Souhlasím  |  Nesouhlasím  |  Odpovědět
Libor  |  04. 10. 2006 13:31

Jedině přetížit metodu ve smyslu:
public Osoba this[int indexOsoby, char text]
public Osoba this[int indexOsoby, int text]
...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Pavel Riedl  |  08. 04. 2005 06:01

Myslím, že část SET indexeru by měla znít:

set
{
osoby[indexOsoby] = value;
}

Jinak prima seriál...

Souhlasím  |  Nesouhlasím  |  Odpovědět
ovo  |  08. 04. 2005 09:42

Já myslím, že tohle vyvolá výjimku, pokud index ještě neexistuje. Nicméně máte pravdu, v článku uvedené řešení je špatně. Existuje varianta metody Add (něco jako AddAt nebo InsertAt), která dostává i index kam se má prvek umístit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Azazel  |  08. 04. 2005 09:48

Ano jistě že to vyvolá výjímku, ale to je v tomto případě správně.
indexujeme přeci prvek který neexistuje.

To co je v článku není sice syntakticky špatně, ale je to špatně logicky
(očekávám, že když na nějaký index něco vložím tak to tam potom bude;)

Souhlasím  |  Nesouhlasím  |  Odpovědět
p  |  08. 04. 2005 10:02

To snad zavisi of semantickeho vyznamu, ktory tej operacii priradime, ked mam triedu mnozina a vlozim tam nieco co tam este neni tak nechcem vynimku ale aby to bolo v mnozine. Pre ine scenare je mozno vhodnejsie aby to hadzalo vynimku. Obe set metody su spravne.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Azazel  |  08. 04. 2005 10:08

oki, ale v tom případě je zase špatně get :)

ListOsob o = new ListOsob();
o[5] = new Osoba("X", "Y");
Console.Writeline(o[5].toString());

co očekáváš od tohoto příkladu?

já očekávám, že mi to buď vyhodí výjímku u toho přiřazení (o[5]=...), nebo mi to vypíše do konzole
Osoba: X Y

všechna ostatní řešení jsou špatná

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor