for each   zodpovězená otázka

VB.NET

Dobrý večer,

mám třídu Entry a druhou třídu listEntries. Jak bych mohl upravit třídu listEntries abych mohl používat for each cyklus?

for each e as Entry in listEntries
.....
next

Díky,

PetrS

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Implementujte v ní rozhraní IEnumerable(Of Entry).

A máte vůbec nějaký rozumný důvod proč nepoužít generickou kolekci List(Of Entry) ve které je už automaticky enumerátor pro příslušný typ? Nejhorší je totiž dělání zbytečností.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Uvnitř třídy listEntries používám list(Of Entry, tento list je private. List Entries obsahuje plno jiných procedůr pomocí kterých přistupuji k objektu.

Nemyslím si, že nejhorší je dělat zbytečnosti. :)

Zajímá mě, jak to udělat.

Myslím, že už to podle IEnumerable nějak vygoogluju.

Díky za odpověď,

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V tom případě by bylo mnohem, mnohem jednodušší a efektivnější třídu ListEntries zdědit od List(Of Entry) a potom jen přidat ty doplňující metody.

V MSDN je příklad jak implementovat IEnumerable(Of T) přímo v dokumentaci k tomuto rozhraní. Bohužel se s tím táhne jedna nepříjemná věc a to, že musíte implementovat zároveň i negenerické IEnumerable, od kterého je generické IEnumerable(Of T) odvozeno. Nežádoucí členy od IEnumerable ovšem není potřeba implementovat a je možné schovat je jako Private.

Ještě bych podotknul že z hlediska doporučených konvencí pojmenovávání pojmenujte třídu pomocí pascal casingu, ne camel casingu a třídy odvozené od List (nebo obecně třídy představující seznam) by měly končit slovem List a ne začínat.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Super,

Díky za odpověď. Tahle velká čistka mě čeká, původně jsem si chtěl vyzkoušet, jak napsat jednoduchou aplikaci podle místního seriálu (VB Net od začátku), ale jaksi se to zvrtlo a je to teď trochu větší. Na samotnou údržbu jsem zatím ještě nenašel moc čas.

Výsledek je tedy ten, že u věcí, které jsou vidět, např: listView nebo combobox používám předpony typu lv_, cmb_, což prý také není zdravé. Trochu se bojím, že když to všechno přejmenuju podle konvencí, už potom nenajdu vůbec nic, protože budu stále znát jen to staré pojmenování. :)

Toliko tedy můj výlev.

Díky,

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S tím pojmenováváním ovládacích prvků je to složité. Přesto že se maďarská konvence nedoporučuje (zkratky před názvem) a to přímo Microsoftem, v samotných příkladech Microsoftu lze na mnoha místech najít právě maďarskou konvenci. Ono to na jednu stranu ulehčuje orientaci v ovládacích prvcích na formuláři (všechny ovl. prvky stejného druhu jsou seřazeny u sebe), ale já to stejně nepoužívám. Ve VB.NET jsou všechny ovl. prvky na formuláři označené jako Friend, takže to vypadá velmi blbě když se přistupuje na Public proměnnou s názvem cboCustomers.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback