Hirdetés
- mefistofeles: A furcsa hobbi.....
- Mr Dini: Mindent a StreamSharkról!
- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Pajac: PassMark - Intel Core2 Quad Q9400
- Lalikiraly: Kinek milyen setupja van?
- sziku69: Fűzzük össze a szavakat :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Kalandor: „Ha engedtem volna a lelkiismeretemnek, az üzlet kevésbé lett volna jövedelmező”
Új hozzászólás Aktív témák
-
C^^
őstag
válasz
Jester01 #2140 üzenetére
Pedig így működik.
A specifikáció azt mondja, hogy "Enumerators are positioned before the first element until the first MoveNext() call."
Jelen esetben ez az akt=null a konstruktorban.
Ha ezek után nincs benne a MoveNext()-ben az if (akt==null) akt=elso;, akkor soha nem fog ráállni az első elemre. (Dob is egy NullReferenceExeptiont.)Így is működik:
public bool MoveNext()
{
akt = akt.KovetkezoElem;
return akt != null;
}
Viszont akkor a konstruktorban egyből az első elemre kell állítani az aktot, ami szintén ellentmond a specifikációnak.Van egy olyan érzésem, hogy még mindig nem értek valamit.
-
C^^
őstag
Sziasztok,
Egy kis segítséget szeretnék kérni.
Adott egy generikus, egyirányú láncolt lista, amit be kéne járni foreach ciklussal.
Ehhez ugyebár a listának implementálnia kell az IEnumerable interfészt, amihez kell egy "felsoroló" generikus osztály, ami implementálja az IEnumerator-t (generikus formában).Ez idáig rendben is van, meg is írtam a "felsoroló" osztályt, illetve a listában implementálva van az IEnumerable interfész, hibát sem dob a fordító, viszont futásnál a foreach-t mintha egyszerűen átugraná a program.
Így néz ki a "bejáróm":
class ListaBejáró<T>:IEnumerator<T>
{
ListaElem<T> elso, akt;
public ListaBejáró(ListaElem<T> elso)
{
this.elso = elso;
akt = null;
}
public T Current
{
get { return akt.Adat; }
}
public void Dispose()
{
elso = null;
akt = null;
}
object System.Collections.IEnumerator.Current
{
get { return this.Current; }
}
public bool MoveNext()
{
if (akt==null)
{
akt = elso;
return false;
}
else
{
akt = akt.KovetkezoElem;
return true;
}
}
public void Reset()
{
akt = null;
}
}Így pedig az IEnumerable implementáció:
public IEnumerator<T> GetEnumerator()
{
ListaBejáró<T> bejaro = new ListaBejáró<T>(ElsoElem);
return bejaro;
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}ListaElem<T> objektumokból áll maga a láncoltlista. Az objektumnak van "Adat" mezője, és egy referenciája a következő elemre "KovetkezoElem" néven.
Magának a listának van egy "ElsoElem" mezője, ami értelemszerűen a lista első elemét jelöli.
Mi lehet a hiba?
Előre is köszönöm.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Battlefield 6
- Xiaomi Mi 11 Ultra - Circus Maximus
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Váratlan kütyü hódít a nők körében
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Apple MacBook
- Milliókkal olcsóbb a Model Y Standard Magyarországon
- Tőzsde és gazdaság
- Vezetékes FEJhallgatók
- exHWSW - Értünk mindenhez IS
- További aktív témák...
- Dell Precision 7740 Workstation 17,3", i9-9980HQ, 32GB, RTX3000 6GB
- Gamer PC - i5 14600k, RTX 3080 és 32gb RAM + GARANCIA
- HALLOWEENI KÉSZLET - RETRO Számítástechnika -- MINDEN RETRO EGY HELYEN -- RETRO Számítógépek
- Samsung S21 Plus 6 hónapos Akkucsere!
- Gamer PC - i7 10700K, RTX 3060ti és 16gb RAM + GARANCIA
- Intel Processzorok sok db : Xeon E5-1620V3, Pentium G4400T, i3 6100, i3-4130, i3-2140T
- Azonnali készpénzes Intel i5 i7 i9 8xxx 9xxx processzor felvásárlás személyesen / csomagküldés
- Csere-Beszámítás! Xbox Series X 1TB Játékkonzol! Ajándék Akkumulátoros töltőállomással!
- HIBÁTLAN iPhone 13 512GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3273, 100% Akkumulátor
- Bomba ár! Lenovo ThinkPad X280 - i5-G8 I 8GB I 256SSD I 12,5" FHD Touch I HDMI I Cam I W11 I Gari!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest