- Samsung Galaxy A56 - megbízható középszerűség
- Netfone
- Okosóra és okoskiegészítő topik
- Vivo X200 Pro - a kétszázát!
- Garmin Fenix 7 és 7S - profi sport megszokásból
- Yettel topik
- T Phone 2 Pro - majdnem mindenben jobb
- One mobilszolgáltatások
- Megérkezett a Google Pixel 7 és 7 Pro
- Hatalmas kedvezménnyel nyit az Ulefone új csúcsmodellje
Hirdetés
Ú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!
- Építő/felújító topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Először égett le egy újságnál a GeForce RTX 5090
- Konkrét moderációval kapcsolatos kérdések
- Samsung Galaxy A56 - megbízható középszerűség
- Opel topik
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Sorozatok
- Fujifilm X
- Videó stream letöltése
- További aktív témák...
- ÚJ Nvidia RTX 5060/TI 8-16Gb GDDR7 DLSS4.0 Ryzen 7 5800X 16x4.7Ghz/32GB/512Gb/1TB M SSD/2ÉV gamer PC
- ÚJ Nvidia RTX 3080 10Gb GDDR6x Ryzen 7 5800X 16x4.7Ghz/32GB/512Gb Nvme SSD/2ÉV gamer PC
- Szép! HP EliteBook 840 G8 Fémházas Hordozható Laptop Ultrabook 14" -50% i5-1145G7 16/512 Iris Xe FHD
- Eladó PC i7 8700, 16 GB RAM, GTX 1060, 460 GB SSD
- Szép! HP EliteBook 840 G8 Fémházas Hordozható Laptop Ultrabook 14" -55% i5-1145G7 32/512 Iris Xe FHD
- Bomba ár! Dell Latitude 7290 - i7-8GEN I 8GB I 256GB SSD I 12,5" HD I HDMI I Cam I W11 I Gari!
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- BESZÁMÍTÁS! ASUS H87I-PLUS H87 chipset alaplap garanciával hibátlan működéssel
- Bomba ár! Dell Latitude E7440 - i5-4GEN I 8GB I 500GB I 14" HD I HDMI I Cam I W10 I Gari!
- Bomba ár! Dell Latitude 7390 - i7-8GEN I 16GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
Állásajánlatok
Cég: FOTC
Város: Budapest