IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Předem neznámá velikost pole

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
user
Tvůrce
Avatar
user:23.6.2012 23:14

Ahoj,
prosím tě, jak se řeší situace kdy velikost pole předem neznám a potřebuji ho deklarovat? (Jsem zvyklí z php, nedefinovat velikost pole).
Děkuji ti

 
Odpovědět
23.6.2012 23:14
Avatar
matesax
Tvůrce
Avatar
Odpovídá na user
matesax:24.6.2012 6:37

Použij list - tedy System.Collec­tions.Generic­.List<typ listu (string, int)>,... Pokud jej budeš používat častěji, dej si System.Collec­tions.Generic do sekce using,... Jinak List jest dynamické pole - jeho velikost se přizpůsobuje počtu prvků v něm,... Deklaruje se:

List<string> list = new List<string>();

A přidáš do něj:

list.Add(5556);
 
Nahoru Odpovědět
24.6.2012 6:37
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:24.6.2012 6:38

To string, nebo int je samozřejmě jenom příklad - chybí mi tam pár teček,... :)

 
Nahoru Odpovědět
24.6.2012 6:38
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na matesax
David Jančík:24.6.2012 8:11

Je to tzv. Genericita nastavujes jaky datovy typ budes do pole vkladat, abys jej nemusel pretypovavat a kontrolovat.

Nahoru Odpovědět
24.6.2012 8:11
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:24.6.2012 8:32

Pár zajímavých příkladů jsem našel tady:

http://www.dotnetperls.com/list

Příjemně mě překvapilo grafické zpracování celého webu. Škoda, že ho tady nehodnotíme.

Nahoru Odpovědět
24.6.2012 8:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:24.6.2012 9:15

Měl by sis přečíst zdejší tutoriály, přesně toto se tam řeší. To jsou naprosté základy.

Nahoru Odpovědět
24.6.2012 9:15
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:24.6.2012 9:17

Teď jsem si to teprve uvědomil, vždyť se ptáš pod článkem, který to vysvětluje. Co ten velký nadpis "Proměnná délka pole"? Tohle asi nikdy nepochopím...

Nahoru Odpovědět
24.6.2012 9:17
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:24.6.2012 9:29

Časem to pochopíš. Někteří lidé nezvládnou dočíst článek, který je delší, než n řádek. Za n si dosaď číslo <0..length>.

Průměrná hodnota n u lidí je asi kolem 100. Delší články zpravidla nemá smysl psát, je lepší je rozdělit.

Nahoru Odpovědět
24.6.2012 9:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
user
Tvůrce
Avatar
Odpovídá na David Hartinger
user:24.6.2012 9:39

samozřejmě jsem si článek četl... o_O
ty si tam ale délku pole při deklaraci dosadíš v proměnné...
Já potřebuji aby při deklaraci pole jsem nemusel definovat jeho velikost

int[] pole = new int['bez definice velikosti pole']

to bude řešit asi ten list...

 
Nahoru Odpovědět
24.6.2012 9:39
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:24.6.2012 9:45

Při deklaraci pole nemusíš definovat jeho velikost, tu definuješ až při jeho inicializaci za běhu programu. Na co se ptáš je vyřešeno zde v článku, pole se vytvoří až podle počtu známek.

Pokud máš na mysli, že chceš dynamicky měnit velikost pole, tak k tomu je např. List. K Listu bys došel během tohoto seriálu, je to objekt, proto je vysvětlený až v objektech. Zde čtenář nemá znalosti, aby s ním mohl pracovat.

Nahoru Odpovědět
24.6.2012 9:45
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na user
Kit:24.6.2012 9:46

Pole v PHP je vlastně kombinací pole a seznamu. Pokud předem neznáš délku pole, zpravidla potřebuješ seznam.

Čisté pole se dnes používá jen zřídka, ve většině aplikací bylo nahrazeno seznamy a slovníky.

Nahoru Odpovědět
24.6.2012 9:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:24.6.2012 9:48

Na list jsem ho odkázal již já - tak k čemu ta diskuze? :)

 
Nahoru Odpovědět
24.6.2012 9:48
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:24.6.2012 9:49

Diskuze proto, že se ptal na deklaraci pole s předem neznámou velikostí, která je zde ukázaná. Patrně myslel něco jiného, než na co se ptal.

Nahoru Odpovědět
24.6.2012 9:49
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:24.6.2012 9:55

Teď mě napadá, jestli jsi nemyslel tohle:

int[] pole; // deklarace

... // nějaký kód, kde zjistíš délku

pole = new int[delka]; // inicializace

Je to ono? :) Deklaraci můžeš provést jen takto, tím dáš C# vědět, že ta proměnná existuje. Pole do ní vložíš až tehdy, co budeš vědět, jak má být velké. Ale stejně můžeš pole založit s délkou podle proměnné až ve chvíli, co délku znáš.

Nahoru Odpovědět
24.6.2012 9:55
New kid back on the block with a R.I.P
Avatar
user
Tvůrce
Avatar
user:24.6.2012 10:04

právě když jsem se zastavil v čtení článků o C# abych si něco zkusil udělat vlastního, zastavil jsem se před článkem list, :) smůla no.
Jo jo spletl jsem se v pojmu deklarace, při inicializaci pole jeho délku nevím, takže potřebuji dynamicky měnit jeho velikost. Myslel jsem že to pude s polem právě vyřešit, proto jsem to psal sem...
Jinak články jsou opravdu dobrý, hlavně chválím ty o OOP. (V php jsem se vždy v OOP nějak zamotal teď už to chápu...).
Jo a nikdy bych si nedovolil psát sem takovýhle otázky aniž bych si článek pořádně přečetl !! Někdy ale může být ne vině moje schopnost vyjadřovat se :(

 
Nahoru Odpovědět
24.6.2012 10:04
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:24.6.2012 10:05

No a to není jednodušší použít list? - nemusí se nikde pídit po velikosti,...

 
Nahoru Odpovědět
24.6.2012 10:05
Avatar
Kit
Tvůrce
Avatar
Odpovídá na user
Kit:24.6.2012 10:08

Pokud potřebuješ pole, u kterého chceš dynamicky měnit jeho velikost, nepotřebuješ pole, ale seznam. Tedy list. Nepleť si to.

Nahoru Odpovědět
24.6.2012 10:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
user
Tvůrce
Avatar
Odpovídá na David Hartinger
user:24.6.2012 10:10

aha :) jj to jsem myslel !!!
díky

 
Nahoru Odpovědět
24.6.2012 10:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.