- Ndruu: Segíts kereshetővé tenni a PH-s arcképeket!
- GoodSpeed: 3I/Atlas: Üstökös vagy idegen civilizáció űrhajója?
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- gban: Ingyen kellene, de tegnapra
- kraftxld: Diáklaptop - Dell Latitude 3140 - Királyunk ajándéka
Ú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!
- Star Citizen
- Asztalos klub
- Facebook és Messenger
- Kedvenc zene a mai napra
- Gaming notebook topik
- Honor Magic V5 - méret a kamera mögött
- Milyen légkondit a lakásba?
- Milyen processzort vegyek?
- Bemutatkozott a Poco X7 és X7 Pro
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- További aktív témák...
- Bomba ár! Dell Latitude 3410 - i3-10110U I 8GB I 256SSD I HDMI I 13,3" FHD Touch I Cam I W11 I Gari
- Bomba ár! Dell Latitude E5550 - i5-5GEN I 8GB I 128SSD I 15,6" FHD Touch I HDMI I W10 I Cam I Gari!
- Bomba ár! Dell Latitude E5540 - i5-4GEN I 4GB I 240SSD I Nvidia I 15,6" FHD I Cam I W10 I Garancia!
- Olcsón Google Nest Mini 2nd Gen
- Bomba ár! Dell Latitude E5530 - i5-3GEN I 4GB I 320GB I HDMI I 15,6" HD I W10 I Gari!
- Gamer PC-Számítógép! Csere-Beszámítás! I7 6700K / RTX 2060 6GB / 32GB DDR4 / 500 SSD
- HP Omen gamer szék Citadel
- BESZÁMÍTÁS! MSI Katana15 HX B14WEK notebook - i7 14650HX 16GB DDR5 1TB SSD nVidia RTX 5050 8GB WIN11
- Bomba ár! Dell Latitude E7440 - i5-4GEN I 8GB I 500GB I 14" HD I HDMI I Cam I W10 I Gari!
- Xiaomi Redmi 13 4G 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



