<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Komentáře k: Jódlování v C#</title>
	<atom:link href="http://www.augi.cz/programovani/jodlovani-v-c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.augi.cz/programovani/jodlovani-v-c/</link>
	<description>Osobní stránky jednoho podivného programátora...</description>
	<lastBuildDate>Fri, 09 Jul 2010 16:36:41 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Od: Augi</title>
		<link>http://www.augi.cz/programovani/jodlovani-v-c/comment-page-1/#comment-5712</link>
		<dc:creator>Augi</dc:creator>
		<pubDate>Sat, 21 Nov 2009 10:26:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.augi.cz/?p=408#comment-5712</guid>
		<description>Ondra[sej]: Všechny ty &lt;em&gt;IDisposable&lt;/em&gt; se uzavřou, protože implementace &lt;em&gt;First&lt;/em&gt;u je taková, že zabije pomocí &lt;em&gt;Dispose&lt;/em&gt; vrácený &lt;em&gt;Enumerator&lt;/em&gt;, čímž dojde i k vykonání &lt;em&gt;finally&lt;/em&gt; bloků v &lt;em&gt;yield&lt;/em&gt; metodě.</description>
		<content:encoded><![CDATA[<p>Ondra[sej]: Všechny ty <em>IDisposable</em> se uzavřou, protože implementace <em>First</em>u je taková, že zabije pomocí <em>Dispose</em> vrácený <em>Enumerator</em>, čímž dojde i k vykonání <em>finally</em> bloků v <em>yield</em> metodě.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od: Ondra[sej] Sýkora</title>
		<link>http://www.augi.cz/programovani/jodlovani-v-c/comment-page-1/#comment-5702</link>
		<dc:creator>Ondra[sej] Sýkora</dc:creator>
		<pubDate>Fri, 20 Nov 2009 11:24:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.augi.cz/?p=408#comment-5702</guid>
		<description>Orion: tady je otázka, jestli člověk chce iterovat, nebo objekty někam ukládat. Osobně častěji potřebuju přes výsledky jenom iterovat a pro každý záznam udělat určitou operaci. V případě, že záznamů jsou desítky tisíc a víc, je ukládání do kolekce zbytečná a neefektivní operace. Naopak v případě, že člověk skutečně potřebuje tu kolekci, je konverze z yieldového IEnumerable do List vcelku efektivní.

Příklad s GetObjects() je problém ještě v trochu jiné věci - co se stane se všemi těmi IDisposable v případě, že uživatel metody neprojde celou vrácenou kolekci (např. zavolá x.GetObjects().First()). Tipoval bych, že zůstanou otevřené, dokud si jich nevšimne GC. A to by třeba na frekventovanějších webech mohlo dělat ošklivé problémy...</description>
		<content:encoded><![CDATA[<p>Orion: tady je otázka, jestli člověk chce iterovat, nebo objekty někam ukládat. Osobně častěji potřebuju přes výsledky jenom iterovat a pro každý záznam udělat určitou operaci. V případě, že záznamů jsou desítky tisíc a víc, je ukládání do kolekce zbytečná a neefektivní operace. Naopak v případě, že člověk skutečně potřebuje tu kolekci, je konverze z yieldového IEnumerable do List vcelku efektivní.</p>
<p>Příklad s GetObjects() je problém ještě v trochu jiné věci &#8211; co se stane se všemi těmi IDisposable v případě, že uživatel metody neprojde celou vrácenou kolekci (např. zavolá x.GetObjects().First()). Tipoval bych, že zůstanou otevřené, dokud si jich nevšimne GC. A to by třeba na frekventovanějších webech mohlo dělat ošklivé problémy&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od: Augi</title>
		<link>http://www.augi.cz/programovani/jodlovani-v-c/comment-page-1/#comment-5581</link>
		<dc:creator>Augi</dc:creator>
		<pubDate>Sun, 01 Nov 2009 09:38:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.augi.cz/?p=408#comment-5581</guid>
		<description>Je to úplně to samé jako v případě &lt;a href=&quot;http://zdrojak.root.cz/clanky/linq-a-lambda-expressions/&quot; rel=&quot;nofollow&quot;&gt;LINQ&lt;/a&gt;u - voláním iterátoru dostaneme pouze objekt, který reprezentuje konkrétní dotaz a tudíž jeho opakovaná iterace způsobí opakové vykonání dotazu. A stejně jako v případě LINQu by toto mělo být řádně dokumentováno. Dobrá poznámka.

Je to asi otázka názoru, ale já považuju použití yieldu u GetObjects() za vhodné. Jak píšeš, na Tvůj případ lze moje řešení převést prostým voláním ToList() nebo ToArray(), ale z Tvého řešení se na moje nedostaneš...

Btw. jsem měl původně připraven právě příklad s měněním objektů a následným posílání do DALu k uložení, ale přišlo mi to už moc překombinované :) I s yieldem to ale krásně lze...</description>
		<content:encoded><![CDATA[<p>Je to úplně to samé jako v případě <a href="http://zdrojak.root.cz/clanky/linq-a-lambda-expressions/" rel="nofollow">LINQ</a>u &#8211; voláním iterátoru dostaneme pouze objekt, který reprezentuje konkrétní dotaz a tudíž jeho opakovaná iterace způsobí opakové vykonání dotazu. A stejně jako v případě LINQu by toto mělo být řádně dokumentováno. Dobrá poznámka.</p>
<p>Je to asi otázka názoru, ale já považuju použití yieldu u GetObjects() za vhodné. Jak píšeš, na Tvůj případ lze moje řešení převést prostým voláním ToList() nebo ToArray(), ale z Tvého řešení se na moje nedostaneš&#8230;</p>
<p>Btw. jsem měl původně připraven právě příklad s měněním objektů a následným posílání do DALu k uložení, ale přišlo mi to už moc překombinované <img src='http://www.augi.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I s yieldem to ale krásně lze&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od: Orion</title>
		<link>http://www.augi.cz/programovani/jodlovani-v-c/comment-page-1/#comment-5580</link>
		<dc:creator>Orion</dc:creator>
		<pubDate>Sun, 01 Nov 2009 04:04:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.augi.cz/?p=408#comment-5580</guid>
		<description>Umm, nutno podotknout ze typ Enumerable neni collection a chova se zcela jinak. Yield se hodi tam, kde provadime s kolekci jednorazovou operaci, pokud chceme s kolekci dale pracovat, yield je spatne reseni a ani pouzit nejde. Zasadni rozdil je, ze pri prochazeni Enumerable se kod v return yield provadi znova a znova pri kazdem pruchodu. 
Tzn napriklad priklad s GetObjects() neni nejlepsi, protoze s touto kolekci muzeme chtit dale pracovat, objekty v kolekci menit a treba znova ulozit do DB. Ovsem s yield toho nedocilime. (ToList() muzeme samozrejme zavolat vzdy :o)</description>
		<content:encoded><![CDATA[<p>Umm, nutno podotknout ze typ Enumerable neni collection a chova se zcela jinak. Yield se hodi tam, kde provadime s kolekci jednorazovou operaci, pokud chceme s kolekci dale pracovat, yield je spatne reseni a ani pouzit nejde. Zasadni rozdil je, ze pri prochazeni Enumerable se kod v return yield provadi znova a znova pri kazdem pruchodu.<br />
Tzn napriklad priklad s GetObjects() neni nejlepsi, protoze s touto kolekci muzeme chtit dale pracovat, objekty v kolekci menit a treba znova ulozit do DB. Ovsem s yield toho nedocilime. (ToList() muzeme samozrejme zavolat vzdy <img src='http://www.augi.cz/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> )</p>
]]></content:encoded>
	</item>
</channel>
</rss>
