<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C# Archives - Yumasoft</title>
	<atom:link href="https://blog.yumasoft.pl/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.yumasoft.pl/tag/c/</link>
	<description>Software development blog</description>
	<lastBuildDate>Sun, 05 Sep 2021 08:46:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://blog.yumasoft.pl/wp-content/uploads/2021/05/cropped-yumasoft_icon_transparent-32x32.png</url>
	<title>C# Archives - Yumasoft</title>
	<link>https://blog.yumasoft.pl/tag/c/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Run Cypress Tests From NUnit Test (C#)</title>
		<link>https://blog.yumasoft.pl/2021/09/run-cypress-tests-from-nunit-test-csharp/</link>
					<comments>https://blog.yumasoft.pl/2021/09/run-cypress-tests-from-nunit-test-csharp/#comments</comments>
		
		<dc:creator><![CDATA[Dawid Sibiński]]></dc:creator>
		<pubDate>Mon, 13 Sep 2021 13:00:00 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[end-to-end tests]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://blog.yumasoft.pl/?p=623</guid>

					<description><![CDATA[<p>In one of our projects, we recently started using Cypress for end-to-end testing. Cypress executes tests written in JavaScript or TypeScript. However, we wanted to first perform some data-preparation operations using C#. In fact, we needed to run Cypress tests from NUnit C# tests. In this article, I&#8217;m sharing how this can be done ?&#8230;</p>
<p>The post <a rel="nofollow" href="https://blog.yumasoft.pl/2021/09/run-cypress-tests-from-nunit-test-csharp/">Run Cypress Tests From NUnit Test (C#)</a> appeared first on <a rel="nofollow" href="https://blog.yumasoft.pl">Yumasoft</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In one of our projects, we recently started using <a href="https://www.cypress.io/">Cypress</a> for end-to-end testing. Cypress executes tests written in JavaScript or TypeScript. However, we wanted to first perform some data-preparation operations using C#. In fact, we needed to run Cypress tests from NUnit C# tests.</p>



<p class="wp-block-paragraph">In this article, I&#8217;m sharing how this can be done ? It will also be useful if you use another testing framework than NUnit, but the examples are based on it.</p>



<span id="more-623"></span>



<h2 class="wp-block-heading">Starting point</h2>



<p class="wp-block-paragraph">You can find the code accompanying this article here: <a href="https://github.com/dsibinski/cypress-csharp-example">https://github.com/dsibinski/cypress-csharp-example</a></p>



<p class="wp-block-paragraph">Our starting point is a React application with Cypress tests:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="888" height="332" src="https://blog.yumasoft.pl/wp-content/uploads/2021/09/1_WebAppCypressTest.png" alt="React app with Cypress test" class="wp-image-628" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/09/1_WebAppCypressTest.png 888w, https://blog.yumasoft.pl/wp-content/uploads/2021/09/1_WebAppCypressTest-300x112.png 300w, https://blog.yumasoft.pl/wp-content/uploads/2021/09/1_WebAppCypressTest-768x287.png 768w" sizes="(max-width: 888px) 100vw, 888px" /></figure></div>



<p class="wp-block-paragraph">I assume that your tests specs are placed within <code>cypress/integration</code> folder. The only spec we have is called <code>submit_spec.ts</code> and it placed in a subfolder called <code>form</code>.</p>



<p class="wp-block-paragraph">Now imagine, that your backend is written in C#. Maybe you&#8217;d like to perform some data initialization <em>before </em>Cypress tests are executed.</p>



<p class="wp-block-paragraph">In our case, we have a C# backend, and we&#8217;ve already had a mechanism for running integration tests. This mechanism runs our server app with an in-memory database, which makes the maintenance of tests very easy.</p>



<p class="wp-block-paragraph">We wanted to use the same mechanism for our new, E2E Cypress tests. It means that we would be able to write some C# initialization code (data creation mostly) and then run Cypress tests from NUnit test.</p>



<p class="wp-block-paragraph">What we want to achieve is to have a C#-Cypress NUnit test look as follows:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="382" height="162" src="https://blog.yumasoft.pl/wp-content/uploads/2021/09/2_RunningCypressTestFromCSharpIdea.png" alt="The picture shows how to run cypress tests from nunit by only calling RunCypressTest(&quot;form/submit_spec.ts&quot;) - the method we will add soon" class="wp-image-630" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/09/2_RunningCypressTestFromCSharpIdea.png 382w, https://blog.yumasoft.pl/wp-content/uploads/2021/09/2_RunningCypressTestFromCSharpIdea-300x127.png 300w" sizes="(max-width: 382px) 100vw, 382px" /></figure></div>



<p class="wp-block-paragraph">Let&#8217;s now see how we can implement the <code>RunCypressTest</code> method ?</p>



<h2 class="wp-block-heading">Implementing a method to run Cypress tests from NUnit</h2>



<p class="wp-block-paragraph">To make things easier, let&#8217;s create a base class all our test classes can use. We&#8217;ll call it <code>CypressTestsBase</code> and add a <code>RunCypressTest</code> method to it: </p>



<script src="https://gist.github.com/dsibinski/70631294e17f4a0230f4fdbbfbc71fe1.js"></script>



<p class="wp-block-paragraph">This code does the job. Few interesting parts:</p>



<ul class="wp-block-list"><li>Line 12 &#8211; I&#8217;m getting there the path to the web app workspace where <code>npx cypress run</code> command can be executed. It might be more complicated in your scenario, so you should adjust accordingly here</li><li>Lines 13-20: thanks to setting <code>RedirectStandardInput</code> to <code>true</code>, we can later execute a custom command via <code>cmd</code>; setting <code>RedirectStandardOutput</code> to <code>true</code> allows us to write everything <code>npx cypress run</code> command does to NUnit test&#8217;s output</li><li>Line 28: <code>TestContext.Out.WriteLine(cypressProcessOutput);</code> actually writes the Cypress output to NUnit test result</li><li>Line 29: here we handle errors during Cypress execution. <code>npx cypress run</code> executed via <code>cmd</code> will return a code different from 0 if anything goes wrong.</li></ul>



<p class="wp-block-paragraph">We can now change <code>FormTests</code> class to run its corresponding Cypress test:</p>



<script src="https://gist.github.com/dsibinski/758bee0d1f3cee14375ebe65b393d5ef.js"></script>



<p class="wp-block-paragraph">Finally, it allows to run our C# test, which then runs its corresponding Cypress spec and prints the output:</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img decoding="async" src="https://blog.yumasoft.pl/wp-content/uploads/2021/09/3_CypressTestResultInNUnitResult-1.png" alt="Run Cypress tests from NUnit - sample passed test in JetBrains Rider" class="wp-image-638" width="706" height="307" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/09/3_CypressTestResultInNUnitResult-1.png 706w, https://blog.yumasoft.pl/wp-content/uploads/2021/09/3_CypressTestResultInNUnitResult-1-300x130.png 300w" sizes="(max-width: 706px) 100vw, 706px" /></figure></div>



<h2 class="wp-block-heading">Cypress errors in NUnit result</h2>



<p class="wp-block-paragraph">Let&#8217;s see what happens if something is broken on Cypress/web app&#8217;s side. Let&#8217;s run our test, but with our web app not running.</p>



<p class="wp-block-paragraph">The NUnit test fails, and we can clearly see what was wrong:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="999" height="323" src="https://blog.yumasoft.pl/wp-content/uploads/2021/09/4_CypressTestFailedNUnitResult.png" alt="Run Cypress tests from NUnit - failed test in JetBrains Rider, all details from cypress visible" class="wp-image-640" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/09/4_CypressTestFailedNUnitResult.png 999w, https://blog.yumasoft.pl/wp-content/uploads/2021/09/4_CypressTestFailedNUnitResult-300x97.png 300w, https://blog.yumasoft.pl/wp-content/uploads/2021/09/4_CypressTestFailedNUnitResult-768x248.png 768w" sizes="auto, (max-width: 999px) 100vw, 999px" /></figure></div>



<p class="wp-block-paragraph">You will see similar errors if something goes wrong in a Cypress test. Cypress also <a href="https://docs.cypress.io/guides/guides/screenshots-and-videos">saves compressed videos and screenshots</a>, so if something goes wrong, diagnosing such failed tests is very easy.</p>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">I hope you found this article on how to run Cypress tests from NUnit useful. Remember that it not only works with NUnit &#8211; it will be suitable for any testing framework. You might need to adjust some parts of the solution, e.g. printing the results to the test result&#8217;s output.</p>



<p class="wp-block-paragraph">This solution allowed us to improve our testing by adding a new type of tests to our <a href="https://blog.yumasoft.pl/2021/07/how-to-configure-jest-tests-on-teamcity/">pipeline</a>. Right next to <a href="https://blog.yumasoft.pl/2021/07/why-naming-tests-matters/">proper naming</a> and <a href="https://blog.yumasoft.pl/2021/08/make-your-tests-bulletproof-with-mutation-testing/">mutation testing</a>, E2E tests add another layer of security and improve the quality of our software.</p>



<p class="wp-block-paragraph">Once more, you can find the complete source code <a href="https://github.com/dsibinski/cypress-csharp-example">here</a>. If you want, feel free to copy it and change it according to your needs ?</p>
<p>The post <a rel="nofollow" href="https://blog.yumasoft.pl/2021/09/run-cypress-tests-from-nunit-test-csharp/">Run Cypress Tests From NUnit Test (C#)</a> appeared first on <a rel="nofollow" href="https://blog.yumasoft.pl">Yumasoft</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yumasoft.pl/2021/09/run-cypress-tests-from-nunit-test-csharp/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Foreach, IEnumerable and IEnumerator in C#</title>
		<link>https://blog.yumasoft.pl/2021/09/foreach-ienumerable-and-ienumerator-in-c/</link>
					<comments>https://blog.yumasoft.pl/2021/09/foreach-ienumerable-and-ienumerator-in-c/#respond</comments>
		
		<dc:creator><![CDATA[Dawid Sibiński]]></dc:creator>
		<pubDate>Mon, 06 Sep 2021 06:00:00 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[.net framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[dotnet]]></category>
		<guid isPermaLink="false">https://blog.yumasoft.pl/?p=593</guid>

					<description><![CDATA[<p>Today, we&#8217;re taking a deeper look at foreach loop in C#. What does a collection need to be able to use it in a foreach loop? Does it have to implement IEnumerable interface? These questions are often asked during interviews, so it&#8217;s worth knowing the answers ? We will go through a step-by-step example in&#8230;</p>
<p>The post <a rel="nofollow" href="https://blog.yumasoft.pl/2021/09/foreach-ienumerable-and-ienumerator-in-c/">Foreach, IEnumerable and IEnumerator in C#</a> appeared first on <a rel="nofollow" href="https://blog.yumasoft.pl">Yumasoft</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Today, we&#8217;re taking a deeper look at <code>foreach</code> loop in C#. What does a collection need to be able to use it in a <code>foreach</code> loop? Does it have to implement <code>IEnumerable</code> interface? These questions are often asked during interviews, so it&#8217;s worth knowing the answers ?</p>



<p class="wp-block-paragraph">We will go through a step-by-step example in building our own custom collection to see how all that works. Let&#8217;s dive in! ?</p>



<span id="more-593"></span>



<p class="wp-block-paragraph"><em>Throughout this article, I&#8217;m working with a Unit Tests project using .NET 5, C# 9.0 and <a href="https://nunit.org/">NUnit</a>. It makes it easier to play with the code on your own. We can create our custom collection and at the same time try it out in a <code>foreach</code> loop in a test method. I recommend this approach for testing out various programming concepts for yourself ?</em></p>



<h2 class="wp-block-heading">Custom collection implementing IEnumerable&lt;T&gt;</h2>



<p class="wp-block-paragraph">First, we want to implement our own, custom collection in C#. The most obvious solution is to implement <code>IEnumerable&lt;T></code> interface. Our IDE will require our class to implement <code>IEnumerator GetEnumerator()</code> and <code>IEnumerator IEnumerable.GetEnumerator()</code> methods, so let&#8217;s do that:</p>



<script src="https://gist.github.com/dsibinski/f40065534bf002dbdce0e834db636d3c.js"></script>



<p class="wp-block-paragraph">Of course, this is just an example to satisfy the <code>foreach</code> loop, so we won&#8217;t care about the actual implementation of these methods ?</p>



<p class="wp-block-paragraph">Custom collection implemented in such a way can be used in <code>foreach</code> loop: </p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="444" height="266" src="https://blog.yumasoft.pl/wp-content/uploads/2021/08/1_ForeachIEnumerableCollection-1.png" alt="Custom collection used in a foreach loop (C#)" class="wp-image-599" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/08/1_ForeachIEnumerableCollection-1.png 444w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/1_ForeachIEnumerableCollection-1-300x180.png 300w" sizes="auto, (max-width: 444px) 100vw, 444px" /></figure></div>



<h2 class="wp-block-heading">Does foreach require IEnumerable?</h2>



<p class="wp-block-paragraph">Let&#8217;s try to get rid of implementing <code>IEnumerable</code> interface. As soon as we do it, our IDE complains:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="856" height="394" src="https://blog.yumasoft.pl/wp-content/uploads/2021/08/2_IDEErrorIEnumerable.png" alt="Custom collection not implement IEnumerable and IDE complaining about &quot;IEnumerable.GetEnumerator&quot; method" class="wp-image-600" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/08/2_IDEErrorIEnumerable.png 856w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/2_IDEErrorIEnumerable-300x138.png 300w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/2_IDEErrorIEnumerable-768x353.png 768w" sizes="auto, (max-width: 856px) 100vw, 856px" /></figure></div>



<p class="wp-block-paragraph">Let&#8217;s try to remove <code>IEnumerable.GetEnumerator()</code> method completely, so our custom collection looks as follows:</p>



<script src="https://gist.github.com/dsibinski/af9b9f9b308e471652f2dcd754754bc6.js"></script>



<p class="wp-block-paragraph">Now guess what &#8211; we can still use <code>MyCollection</code> within the <code>foreach</code> loop!</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="444" height="266" src="https://blog.yumasoft.pl/wp-content/uploads/2021/08/3_Foreach_Collection_with_GetEnumerator_method.png" alt="Custom collection used in a foreach loop (C#)" class="wp-image-601" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/08/3_Foreach_Collection_with_GetEnumerator_method.png 444w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/3_Foreach_Collection_with_GetEnumerator_method-300x180.png 300w" sizes="auto, (max-width: 444px) 100vw, 444px" /></figure></div>



<p class="wp-block-paragraph">So you already know that, when asked during an interview whether <code>foreach</code> needs a collection to implement <code>IEnumerable</code>, the answer is no ?</p>



<h2 class="wp-block-heading">Custom IEnumerator</h2>



<p class="wp-block-paragraph">Currently, our collection has a single <code>GetEnumerator()</code> method returning <code>IEnumerator&lt;MyObject></code>. We already know that this method is needed in a collection to be able to use it within a <code>foreach</code> loop. </p>



<p class="wp-block-paragraph">However, let&#8217;s work on what this method returns. We&#8217;ll implement our custom <code>IEnumerator</code>. Again &#8211; the most obvious solution is to create a class implementing <code>IEnumerator&lt;T></code> interface:</p>



<script src="https://gist.github.com/dsibinski/014116fc47bf9159dcfe3e44bb54b6fe.js"></script>



<p class="wp-block-paragraph">That&#8217;s the implementation proposed by the IDE (Rider). We can now change our collection to use this custom enumerator. See that it can still be used within <code>foreach</code>:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="467" height="466" src="https://blog.yumasoft.pl/wp-content/uploads/2021/08/4_Custom_Collection_With_Custom_Enumerator.png" alt="Custom collection (without implementing any interface) returns a custom enumerator MyObjectEnumerator" class="wp-image-603" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/08/4_Custom_Collection_With_Custom_Enumerator.png 467w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/4_Custom_Collection_With_Custom_Enumerator-300x300.png 300w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/4_Custom_Collection_With_Custom_Enumerator-150x150.png 150w" sizes="auto, (max-width: 467px) 100vw, 467px" /></figure></div>



<p class="wp-block-paragraph">So far, so good. But why all these methods in <code>MyObjectEnumerator</code>? ?</p>



<h2 class="wp-block-heading">Does foreach need an enumerator implementing IEnumerator?</h2>



<p class="wp-block-paragraph">If we remove inheritance from <code>IEnumerator</code> from <code>MyObjectEnumerator</code>, the IDE only complains about <code>IEnumerator.Current</code> property, so let&#8217;s get rid of it. Our custom enumerator now looks as follows:</p>



<script src="https://gist.github.com/dsibinski/bb9e8ef54834656d4994e337c00f6c8a.js"></script>



<p class="wp-block-paragraph">Yeah, you guessed it again &#8211; we can still use our collection in a <code>foreach</code> loop ?</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="444" height="266" src="https://blog.yumasoft.pl/wp-content/uploads/2021/08/5_Foreach_custom_enumerator_no_interface.png" alt="Custom collection used in a foreach loop (C#)" class="wp-image-604" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/08/5_Foreach_custom_enumerator_no_interface.png 444w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/5_Foreach_custom_enumerator_no_interface-300x180.png 300w" sizes="auto, (max-width: 444px) 100vw, 444px" /></figure></div>



<p class="wp-block-paragraph">However&#8230; Does our custom enumerator really needs all of these stuff:  <code>MoveNext(), Reset()</code>, <code>Dispose()</code> and <code>MyObject Current</code> ? Let&#8217;s remove all of them and see what our IDE tells us:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="517" src="https://blog.yumasoft.pl/wp-content/uploads/2021/08/6_Foreach_empty_Enumerator_error-1024x517.png" alt="IDE (JetBrains Rider) error:
Type 'ForeachFun.MyCollection' cannot be used in 'foreach' statement because it neither implements 'IEnumerable' or 'IEnumerable', nor has suitable 'GetEnumerator' method which return type has 'Current' property and 'MoveNext' method" class="wp-image-605" srcset="https://blog.yumasoft.pl/wp-content/uploads/2021/08/6_Foreach_empty_Enumerator_error-1024x517.png 1024w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/6_Foreach_empty_Enumerator_error-300x151.png 300w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/6_Foreach_empty_Enumerator_error-768x388.png 768w, https://blog.yumasoft.pl/wp-content/uploads/2021/08/6_Foreach_empty_Enumerator_error.png 1153w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p class="wp-block-paragraph">That&#8217;s the error from IDE when trying to iterate through our custom collection in <code>foreach</code>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p></p><cite>Type &#8216;ForeachFun.MyCollection&#8217; cannot be used in &#8216;foreach&#8217; statement because it neither implements &#8216;IEnumerable&#8217; or &#8216;IEnumerable&#8217;, <strong>nor has suitable &#8216;GetEnumerator&#8217; method which return type has &#8216;Current&#8217; property and &#8216;MoveNext&#8217; method</strong></cite></blockquote>



<p class="wp-block-paragraph">This error actually tells us everything. This is the ultimate answer to the legendary C# interview question: &#8220;What does a collection need to be able to use it in <code>foreach</code> loop?&#8221;. In other words: &#8220;Is it necessary for a collection to implement <code>IEnumerable</code> to use it in a <code>foreach</code> loop?&#8221;</p>



<p class="wp-block-paragraph">The answer is:<strong> a collection needs to have a <code>GetEnumerator</code>() method returning an object of type having <code>Current</code> property and <code>bool MoveNext()</code> method. No interfaces are required anywhere here ?</strong></p>



<p class="wp-block-paragraph">The compiler uses duck typing to find these two necessary ingredients of the type returned from <code>GetEnumerator()</code>. It means that is looks for these properties by text. Later, depending on the type of <code>Current</code> property, a single element inside the <code>foreach</code> is typed accordingly. Only if this duck searching fails, the compiler checks whether the collection implements the interfaces.</p>



<p class="wp-block-paragraph">In the end, this is our simplest and fully legit code (except the actual implementations of the methods, which is out of scope of this article):</p>



<script src="https://gist.github.com/dsibinski/99a2559ef72c2f493a231dc13879b4ec.js"></script>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">I hope you got to know something new about <code>foreach</code> loop from this article. This may not sound like a knowledge you&#8217;d need on a daily basis, but it&#8217;s worth knowing how stuff works under the hood ? Plus, you can always score a point during your next interview ?!</p>
<p>The post <a rel="nofollow" href="https://blog.yumasoft.pl/2021/09/foreach-ienumerable-and-ienumerator-in-c/">Foreach, IEnumerable and IEnumerator in C#</a> appeared first on <a rel="nofollow" href="https://blog.yumasoft.pl">Yumasoft</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yumasoft.pl/2021/09/foreach-ienumerable-and-ienumerator-in-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
