Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Honza 31. 08. 2013, 14:40:04
-
Dobrý den,
potřeboval bych, prosím, poradit, jak mám iterovat nýsledující kontejner:
Dictionary<string, Dictionary<DateTime, int>> zaznamy = new Dictionary<string, Dictionary<DateTime, int>>();
Potřeboval bych procházet "vnějším" slovníkem a získat jednotlivé "záznamy".
Neporadili byste mi někdo, prosím?
Děkuji
H.
-
co toto? v c# sice nedelam, ale dle prikladu na internetu a dokumentace by to melo fungovat
foreach (KeyValuePair<string, Dictionary<DateTime, int>> iterator in zaznamy){
iterator.Key; // string
iterator.Value; // Dictionary<DateTime, int>
}
-
Ano, skutečně, funguje to.
Mnohokrát děkuji.
H.
-
co toto? v c# sice nedelam, ale dle prikladu na internetu a dokumentace by to melo fungovatforeach (KeyValuePair<string, Dictionary<DateTime, int>> iterator in zaznamy){
iterator.Key; // string
iterator.Value; // Dictionary<DateTime, int>
}
pls pouzivajte type inference... ked nie koli sebe, tak aspon koli programatorom co ten kod budu po vas citat:
foreach (var iterator in zaznamy){
iterator.Key; // string
iterator.Value; // Dictionary<DateTime, int>
}
-
co toto? v c# sice nedelam, ale dle prikladu na internetu a dokumentace by to melo fungovatforeach (KeyValuePair<string, Dictionary<DateTime, int>> iterator in zaznamy){
iterator.Key; // string
iterator.Value; // Dictionary<DateTime, int>
}
pls pouzivajte type inference... ked nie koli sebe, tak aspon koli programatorom co ten kod budu po vas citat:
foreach (var iterator in zaznamy){
iterator.Key; // string
iterator.Value; // Dictionary<DateTime, int>
}
neprogramuju v c#, a propos, pro programatory bude lepsi vedet, co za typ je iterator
-
Já v C# programuju; resp. programování v C# "brings a food on my table".
Použití var je preferovaná cesta. Nic se tím nezpomalí (type inference, tedy odhadnutí, co je proměnná za typ, proběhne při kompilaci stjeně tak i tak), ale kód se zkrátí, což přispěje k přehlednosti. Mám-li dictionary, ta proměnná bude vždy typu KeyValuePair. Pokud bude proměnná dictionary nazvaná nějak cypatě, (např. zaznamy), pak bude dost těžké hádat, co za typ má být klíč a hodnota; potom stačí najet kurzorem myši na "var" a ukáže se Ti přesný typ (min. pokud používáš ReSharper, což je téměř nutnost).
Pokud při psaní kódu dodržíš best practices, což bys stejně měl jinak pravděpodobně vznikne neudržovatelný bastl, není důvod var nepoužít.
-
ad1) Na take prkotiny sa pouziva google. Odpoved mas prinajhorsiom do minuty..
ad2) var vo foreach je bezna a preferovana cesta a pri dictionary obzlast.
ad3) Na typy sa velmi clovek nediva, ak nemusi (vacsinou su identifikatori nejako rozumne pomenovane. Ak nie su, mali by ! ! !). Ak musi, pouzije tooltip vo Visual Studiu.
-
Já v C# programuju; resp. programování v C# "brings a food on my table".
Použití var je preferovaná cesta. Nic se tím nezpomalí (type inference, tedy odhadnutí, co je proměnná za typ, proběhne při kompilaci stjeně tak i tak), ale kód se zkrátí, což přispěje k přehlednosti. Mám-li dictionary, ta proměnná bude vždy typu KeyValuePair. Pokud bude proměnná dictionary nazvaná nějak cypatě, (např. zaznamy), pak bude dost těžké hádat, co za typ má být klíč a hodnota; potom stačí najet kurzorem myši na "var" a ukáže se Ti přesný typ (min. pokud používáš ReSharper, což je téměř nutnost).
Pokud při psaní kódu dodržíš best practices, což bys stejně měl jinak pravděpodobně vznikne neudržovatelný bastl, není důvod var nepoužít.
preferovana cesta to neni:
http://msdn.microsoft.com/en-us/library/bb384061%28VS.90%29.aspx
However, the use of var does have at least the potential to make your code more difficult to understand for other developers.
I z prikladu je videt, ze nahrazenim konkretniho typu za var neni zrejme co se iteruje. Ne vzdy se kod prohlizi v IDE a ne vzdy je zabava krouzit mysi po monitoru.
Takze zkraceni ano, vetsi prehlednost ne.
-
@Looser To, co odkazuješ, nejsou guidelines/best practices, ale technická dokumentace. To, že Tě technická dokumentace upozorní na riziko, že něco _může_ ..., neimplikuje, zda-li se jedná o preferovanou cestu či nikoliv. Technická dokumentace totiž neříká nic o preferovaných způsobech, ani to není její účel.
Chceš-li se o tom hádat, můžeme to udělat jinde - toto nesouvisí s původním příspěvkem.