C# Hogyan lehet létrehozni egy változót, amelynek neve egy már meglévő string változóban szerepel?
pl:
string nev = "film";
int [változónév=film];
Egy leegyszerűsített változatot kérdeztem.
Köszönöm a válaszod!
Az feladatom hanoslóbb ehhez:
Film film1 = new Film("SpongyaBob");
Ha a felhasználótól új filmcímet kérek, akkor bővítse a Film osztályt film2 névvel.
Film [film2] = new Film("Felhasználó által megadott cím");
Előző kommentem bővítve:
Úgy gondoltam felveszek egy számláló változót, amit hozzáteszek a film után:
int i;
string nev = "film"+i.Tostring()
Film [nev] = new Film("Felhasználó által megadott cím");
Ehhez én Dictionary-t használnék, ahol a kulcs a "változó neve", míg az értéke az osztály egy példánya.
Ugyanakkor nem értem, hogy mire kell ez neked. Film címét inkább magában a példányban tárolnám, nem pedig a rá mutató referencia nevében.
Úgy érted:
Film[] film = new Film[2];
int számláló = 0;
film[számláló++] = new Film("Spongyabob");
film[számláló++] = new Film("Felhasználó által megadott cím");
Nem rossz, de ennek véges a mérete.
Persze tehetném akkor láncolt listában, de nekem méghasonlóbb ahhoz a feladatom, hogy:
Film film1 = new Film("SpongyaBob");
Lista<Film> lista = new Lista<Film>();
És Film osztályt már nem tudom hogy betenni a láncolt listába, ha az is láncolt lista.
Ezért lenne jobb a változónév változtatós forma.
Nem tudom, hogy #6-ost kinek írtad, de azért válaszolok.
A List class NEM láncolt listaként kerül megvalósításra, hanem egy tömböt alkalmaz a háttérben. Ha kevésnek bizonyul a tömb mérete, akkor egy újat (dupla akkora mérettel) hoz helyette létre. Magyarán működik a következő:
List<Film> filmLista=new List<Film>(10); // Érdemes kezdeti kapacitást megadni, ha be tudod lőni, kb mennyi elemet akarsz tárolni
Film film = new Film("Valami filmcím");
_filmLista.Add(film);
Természetesen listákat is lehet a listában tárolni.
List<List<Film>> listCeption = new List<List<Film>>();
List<Film> filmList1 = new List<Film>(1);
Film film1 = new Film("Filmcím");
filmList1.Add(film1);
listCeption.Add(filmList1);
Köszönöm válaszod!
A leírásodból azt vettem ki hogy, megoldásom lehet:
List<Film> filmLista = new List<Film>;
filmLista.Add(new Film("SpongyaBob");
filmLista.Add(new Film(Console.ReadLine());
Ez jónak tűnik!
Ha létre szeretnék hozni egy másik listát:
Lista2<Film> filmLista2 = new Lista2<Film>
ugyanúgy fogja tartalmazni az előzőleg létrehozott (new Film("SpongyaBob) és new Film(Console.ReadLine()) példányokat?
Előző kérdésem átírom:
A Film osztály tartalmazza-e magában azokat a létrehozott példányokat, és ha igen hogyan hivatkozok rá, hogy megadhassam máshol is?
(Mivel nincs példánynevük, csak new Film(..) lettek létrehozva.
Ha egy új listát hozol létre, akkor az csak akkor fogja tartalmazni egy másik lista elemeit, ha azt paraméterül adod a konstruktornak. Azaz:
List<Film> list1 = new List<Film>();
list1.Add(new Film("Blabla"));
List<Film> list2 = new List<Film>(); // list2 üres lesz.
List<Film> list3 = new List<Film>(lista1); // list3 tartalmazza list1 elemeit is.
"A Film osztály tartalmazza-e magában azokat a létrehozott példányokat..."
A Film osztály nem tartalmaz semmit. Egészen pontosan lehetnek osztályszintű változók, de azokat ugye neked kell megadnod, mint ahogy a példány változóit is...
Talán egyszerűbb lenne, ha leírnád, mit szeretnél csinálni. Nem ilyen "alacsony szinten", hogy A osztály tartalmazza B elemeket, hanem hogy konkrétan mit akarsz tárolni, milyen műveleteket akarsz rajtuk végrehajtani. Ne haragudj, de úgy tűnik számomra, hogy neked az OO alapokkal vannak gondjaid, nem csak a nyelvvel...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!