- Sugárhajtómű ihlette a Zalman CPU-hűtőjét, de nem az üzemzaj tekintetében
- Gaming notebook topik
- NTFS, exFAT, FAT32 – Melyiket válaszd és miért?
- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- Bambu Lab 3D nyomtatók
- Forrmell.enn
- OLED TV topic
- 3D nyomtatás
- Canon EOS DSLR topic
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
Ú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
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Villanyszerelés
- Autós topik
- Sugárhajtómű ihlette a Zalman CPU-hűtőjét, de nem az üzemzaj tekintetében
- Gaming notebook topik
- E-roller topik
- NTFS, exFAT, FAT32 – Melyiket válaszd és miért?
- The Crew sorozat
- RC modell földön, vízen, levegőben
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- További aktív témák...
- Intel Core i7 6700K / GTX 1660TI / 16GB DDR4 RAM / 500 GB SSD konfig eladó
- Samsung Galaxy S23 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A53 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Megkímélt állapotú Xbox Series X 1TB eladó. Kitisztítva és újrapasztázva!
- Gamer PC - i5 13400F, GTX 1080ti és 16gb DDR5
- BESZÁMÍTÁS! Gigabyte GA-A620M R5 7600 32GB DDR5 512GB SSD RX 6700XT 12GB Rampage SHIVA Corsair 750W
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- Bomba ár! HP EliteBook 830 G7 - i5-10GEN I 16GB I 512GB SSD I HDMI I 13,3" FHD I Cam I W11 I Gari!
- Apple iPhone 7 32GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! MSI Z690 i7 12700K 32GB DDR4 1TB SSD RX 6800 16GB Phanteks P600S Cooler Master 750W
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest