Diskuze: Předem neznámá velikost pole

C# .NET .NET (C# a Visual Basic) Předem neznámá velikost pole American English version English version

Avatar
user
Redaktor
Avatar
user:

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
Redaktor
Avatar
Odpovídá na user
matesax:

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
Redaktor
Avatar
Odpovídá na matesax
matesax:

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
Odpovídá na matesax
David Jančík [sczdavos]:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Č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
Redaktor
Avatar
Odpovídá na David Čápka
user:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na user
Kit:

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
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

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

 
Nahoru Odpovědět 24.6.2012 9:48
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
user
Redaktor
Avatar
user:

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
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

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
Redaktor
Avatar
Odpovídá na user
Kit:

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
Redaktor
Avatar
Odpovídá na David Čápka
user:

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.