Diskuze: Cyklus foreach a List

C# .NET .NET (C# a Visual Basic) Cyklus foreach a List American English version English version

Avatar
zajda.elite
Člen
Avatar
zajda.elite:
List<Kontakt> adresar;

            ...

            Kontakt _kontakt = new Kontakt(jmeno, prijmeni, vek, tel);

            foreach (Kontakt x in adresar)// adresar mi kompilátor nebere,                                     //prý  nemá přiřazenou hodnotu
            {
                Console.WriteLine(x.ToString());
            }

Je možný použít tuhle strukturu

 
Odpovědět 7.10.2012 19:22
Avatar
matesax
Redaktor
Avatar
Odpovídá na zajda.elite
matesax:

Je jasné, že jsi ji neinicializoval.. Inicializuj ji a bude to OK...

List<Kontakt> adresar = new List<Kontakt>();

A dosazuješ do ní hodnoty:

adresar.Add(new Kontakt(jmeno, prijmeni, vek, tel));

Ale lepší by bylo poslat celý kód - kdo ví, jestli je pro tvoji situaci vhodný List/pole/sez­nam/slovník...

Editováno 7.10.2012 19:53
 
Nahoru Odpovědět  +1 7.10.2012 19:50
Avatar
matesax
Redaktor
Avatar
Odpovídá na zajda.elite
matesax:

Jo a používej modifikátory:

private List<Kontakt> adresar = new List<Kontakt>();

Dále _kontakt toto není vhodné pojmenování - znak _ nepoužívej.

 
Nahoru Odpovědět 7.10.2012 19:56
Avatar
zajda.elite
Člen
Avatar
zajda.elite:

Dík, úplně mi vypadlo, že se inicializuje takhle!:o

 
Nahoru Odpovědět 7.10.2012 20:06
Avatar
matesax
Redaktor
Avatar
Odpovídá na zajda.elite
matesax:

Ale jak píši, třeba pro tvoji situaci List vůbec není vhodný - raději bych viděl celý kód...

Je-li dlouhý:

https://gist.github.com/

 
Nahoru Odpovědět 7.10.2012 20:09
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Pokud je to seznam kontaktů, tak právě na to je List určen. Jakou jinou datovou strukturu bys chtěl použít? Slovník?

Editováno 7.10.2012 20:21
Nahoru Odpovědět 7.10.2012 20:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

No seznam kontaktů - seznam?

 
Nahoru Odpovědět 7.10.2012 20:24
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Seznam se anglicky řekne list. List je tedy seznam.

Nahoru Odpovědět 7.10.2012 20:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:
new Kontakt[] { new Kontakt() };
new List<Kontakt>() { new Kontakt() };

Až na to, že to druhé je dynamické...

 
Nahoru Odpovědět 7.10.2012 20:33
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

To první není seznam, ale pole. Je nutné tyto datové struktury rozlišovat, každá se hodí k jinému účelu. Seznam kontaktů je něco jiného než pole kontaktů.

Pro seznam existují 3 základní funkce: map(), filter() a reduce(). Tyto funkce nejsou pro pole definovány. Pokud použiješ pole tam, kde je vhodný seznam, musíš je do programu dolepovat.

Nahoru Odpovědět 7.10.2012 21:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Pole to je snad při určení rozměru - ne?

 
Nahoru Odpovědět 7.10.2012 21:05
Avatar
Kit
Redaktor
Avatar
Kit:

Když si to řekneš nahlas, tak to musíš slyšet.

  • pole lidí nebo seznam lidí?
  • pole čísel nebo seznam čísel?
  • pole okurek nebo seznam okurek?
  • pole pixelů ve foťáku nebo seznam pixelů ve foťáku?

Rozdíl je v tom, že pokud údaj má své pevné místo určené indexem (např. pixely ve foťáku nebo okurky na poli), jedná se o pole. Když jednu okurku utrhnu, ostatní se neposunou na její místo, ale to místo zůstane prázdné. Když z telefonního seznamu vyhodím bývalou přítelkyni, tak tam po ní nezbude díra, ale následující se posunou o jedno místo nahoru. Je to seznam.

V seznamu se dá vyhledávat, dá se řadit podle abecedy, dá se spojit do věty. S polem to udělat nelze, protože v poli má každý prvek své pevné místo dané indexem.

Editováno 7.10.2012 21:27
Nahoru Odpovědět  +2 7.10.2012 21:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 12 zpráv z 12.