<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>C# on David Cumps</title><link>/tags/csharp/</link><description>Recent content in C# on David Cumps</description><generator>Hugo</generator><language>en-us</language><copyright>Copyright &amp;copy; 2026</copyright><lastBuildDate>Mon, 06 Jan 2014 00:00:00 +0100</lastBuildDate><atom:link href="/tags/csharp/index.xml" rel="self" type="application/rss+xml"/><item><title>Nancy + Static Content + OWIN + SystemWeb</title><link>/archive/2014-01-06-nancy-static-content-owin-systemweb/</link><pubDate>Mon, 06 Jan 2014 00:00:00 +0100</pubDate><guid>/archive/2014-01-06-nancy-static-content-owin-systemweb/</guid><description>&lt;p&gt;I&amp;rsquo;ve just started working with &lt;a href="https://nancyfx.org"&gt;Nancy&lt;/a&gt; to create a new site. It&amp;rsquo;s&#10;going to be hosted on IIS and I decided to try and take the&#10;&lt;a href="http://owin.org/"&gt;OWIN&lt;/a&gt; approach. When I got to the part of&#10;&lt;a href="https://github.com/NancyFx/Nancy/wiki/Managing-static-content"&gt;managing static content&lt;/a&gt;&#10;I ran into some problems, mainly not getting it to work. Read on for the&#10;solution!&lt;/p&gt;</description></item><item><title>GPG in Outlook 2007 - OutlookGnuPG</title><link>/archive/2009-04-15-gpg-in-outlook-2007-outlookgnupg/</link><pubDate>Wed, 15 Apr 2009 00:00:00 +0200</pubDate><guid>/archive/2009-04-15-gpg-in-outlook-2007-outlookgnupg/</guid><description>&lt;p&gt;A long time ago, I used &lt;a href="http://en.wikipedia.org/wiki/Pretty_Good_Privacy" title="Wikipedia - Pretty Good Privacy"&gt;&lt;strong&gt;PGP&lt;/strong&gt;&lt;/a&gt; for signing my email, but I stopped using it. Probably because I didn&amp;rsquo;t quite get the concept yet, but that has changed now. Today I switched to &lt;a href="http://gnupg.org/" title="GnuPG"&gt;&lt;strong&gt;GPG&lt;/strong&gt;&lt;/a&gt; for signing my mail and files, with all the required files running from my &lt;strong&gt;memory stick&lt;/strong&gt;. One thing bothered me however, no &lt;strong&gt;Outlook 2007&lt;/strong&gt; support at all. There are some plugins around for older Outlook versions, but that didn&amp;rsquo;t quite work out.&lt;/p&gt;</description></item><item><title>Modified MVC AccountController for Preview 5</title><link>/archive/2008-09-12-modified-accountcontroller-preview-5/</link><pubDate>Fri, 12 Sep 2008 00:00:00 +0200</pubDate><guid>/archive/2008-09-12-modified-accountcontroller-preview-5/</guid><description>&lt;p&gt;I just downloaded the &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16775" title="ASP.NET MVC Preview 5"&gt;&lt;strong&gt;ASP.NET MVC Preview 5&lt;/strong&gt;&lt;/a&gt; bits from Codeplex and started on my &lt;strong&gt;first experiment&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>C# World Of Warcraft Armory Library 0.1</title><link>/archive/2008-09-09-c-world-of-warcraft-armory-library-0-1/</link><pubDate>Tue, 09 Sep 2008 00:00:00 +0200</pubDate><guid>/archive/2008-09-09-c-world-of-warcraft-armory-library-0-1/</guid><description>&lt;p&gt;Since I started playing &lt;strong&gt;World of Warcraft&lt;/strong&gt; again, I&amp;rsquo;ve taken a bit more of a &lt;strong&gt;developer approach&lt;/strong&gt; to it this time, and after founding a little &lt;strong&gt;casual guild&lt;/strong&gt;, I decided to create a site for it.&lt;/p&gt;</description></item><item><title>ArrayList Class</title><link>/archive/exam-70-536/arraylist/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/arraylist/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Resizeable, unordered, index-based collection.&lt;/li&gt;&#10;&lt;li&gt;Suffers from &lt;a href="/archive/exam-70-536/boxing/" title="boxing"&gt;boxing/unboxing&lt;/a&gt; when working with value types.&lt;/li&gt;&#10;&lt;li&gt;Implements IEnumerator, allowing foreach operations.&#10;&lt;ul&gt;&#10;&lt;li&gt;The IEnumerator is a .NET implementation of the &lt;a href="/archive/2008-07-23-design-patterns-iterator-pattern/"&gt;Iterator Pattern&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use a &lt;a href="/archive/exam-70-536/genericlist/" title="genericlist"&gt;generic collection&lt;/a&gt; instead of the object-based ArrayList.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="adding-and-removing-elements"&gt;Adding and Removing Elements&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;ArrayList&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ArrayList&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;16&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;AddRange&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt;[] { &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt; });&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Insert&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;InsertRange&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;, &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;[] { &lt;span style="color:#2aa198;font-weight:bold"&gt;32&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;64&lt;/span&gt; });&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;o&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;o&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Remove&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;RemoveAt&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;RemoveRange&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;o&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;o&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="checking-existence"&gt;Checking Existence&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;ArrayList&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ArrayList&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;AddRange&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt;[] { &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt; });&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Contains&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;) ? &lt;span style="color:#2aa198"&gt;&amp;#34;World Found&amp;#34;&lt;/span&gt; : &lt;span style="color:#2aa198"&gt;&amp;#34;World Missing&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>BinaryReader Class and BinaryWriter Class</title><link>/archive/exam-70-536/binaryreader/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/binaryreader/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Used to read and write binary data from streams.&lt;/li&gt;&#10;&lt;li&gt;Call the correct Read methods when using a BinaryReader.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close, since it has a stream behind it.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="read-and-write-binary"&gt;Read and Write Binary&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Create&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\BinaryTest.dat&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BinaryWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BinaryWriter&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;byte&lt;/span&gt;[] { &lt;span style="color:#2aa198;font-weight:bold"&gt;47&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;50&lt;/span&gt; });&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;42&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenRead&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\BinaryTest.dat&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BinaryReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BinaryReader&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadBytes&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadString&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadInt32&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>BitArray Class</title><link>/archive/exam-70-536/bitarray/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/bitarray/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Contains an array of true/false values.&lt;/li&gt;&#10;&lt;li&gt;Resizable through the Length property.&lt;/li&gt;&#10;&lt;li&gt;Supports bitwise operations.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="setting-values"&gt;Setting Values&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitArray&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BitArray&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;8&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SetAll&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;] = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="xor"&gt;Xor&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitArray&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BitArray&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;8&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SetAll&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;] = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitArray&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BitArray&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;8&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SetAll&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;[&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;] = &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitArray&lt;/span&gt; &lt;span style="color:#268bd2"&gt;xor&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Xor&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;xor&lt;/span&gt;[&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>BitVector32 structure and BitVector32.Section structure</title><link>/archive/exam-70-536/bitvector/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/bitvector/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Used to manipulate the bits of a 32 integer.&lt;/li&gt;&#10;&lt;li&gt;Used to pack multiple small numbers into one when storage is an issue.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="bitwise-manipulation"&gt;Bitwise Manipulation&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;firstBit&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateMask&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;secondBit&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateMask&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;firstBit&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;thirdBit&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateMask&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;secondBit&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;firstBit&lt;/span&gt;] = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;thirdBit&lt;/span&gt;] = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Data&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// 5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// BitVector32{00000000000000000000000000000101}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="bit-packing"&gt;Bit Packing&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Section&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateSection&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Max number to store is 10&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Section&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateSection&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;80&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Max number to store is 80&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Section&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateSection&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Max number to store is 5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BitVector32&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;] = &lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;] = &lt;span style="color:#2aa198;font-weight:bold"&gt;79&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;] = &lt;span style="color:#2aa198;font-weight:bold"&gt;3&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;]); &lt;span style="color:#93a1a1;font-style:italic"&gt;// 5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;]); &lt;span style="color:#93a1a1;font-style:italic"&gt;// 79&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;]); &lt;span style="color:#93a1a1;font-style:italic"&gt;// 3&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Data&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// 7413&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// BitVector32{00000000000000000001110011110101}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Boxing And Unboxing</title><link>/archive/exam-70-536/boxing/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/boxing/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Boxing is an implicit conversion of a value-type to the object type.&#10;&lt;ul&gt;&#10;&lt;li&gt;Boxing a value-type will copy the value on the heap, and place a pointer to the boxed value on the stack.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Try to prevent boxing/unboxing when possible, use generics or multiple overloads instead.&#10;&lt;ul&gt;&#10;&lt;li&gt;Read &lt;a href="/archive/2005-02-14-boxing-unboxing-in-net/"&gt;Boxing/Unboxing In .NET&lt;/a&gt; for performance tests.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="boxing-operation"&gt;Boxing Operation&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;i&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;123&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;o&lt;/span&gt; = (&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;i&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="unboxing-operation"&gt;Unboxing Operation&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;o&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;123&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;i&lt;/span&gt; = (&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;o&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>BufferedStream Class</title><link>/archive/exam-70-536/bufferedstream/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/bufferedstream/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides an buffer for another Stream.&lt;/li&gt;&#10;&lt;li&gt;Used when the underlying stream is not very efficient in handling constant calls.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close on a stream.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="write-to-file"&gt;Write to File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Create&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\TestBuff.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;BufferedStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;BufferedStream&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Bye Bye!&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>CollectionsUtil</title><link>/archive/exam-70-536/collectionsutil/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/collectionsutil/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Helper method to create a case-insensitive &lt;a href="/archive/exam-70-536/hashtable/" title="hashtable"&gt;Hashtable&lt;/a&gt; or &lt;a href="/archive/exam-70-536/sortedlist/" title="sortedlist"&gt;SortedList&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;CollectionsUtil&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateCaseInsensitiveHashtable&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;CollectionsUtil&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateCaseInsensitiveSortedList&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Comparer Class</title><link>/archive/exam-70-536/comparer/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/comparer/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Used as the default comparer when sorting with &lt;a href="/archive/exam-70-536/arraylist/" title="arraylist"&gt;ArrayList&lt;/a&gt; for example.&lt;/li&gt;&#10;&lt;li&gt;Implements the &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.icomparer.aspx" title="http://msdn.microsoft.com/en-us/library/system.collections.icomparer.aspx"&gt;IComparer interface&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use the generic version of IComparer&amp;lt;T&amp;gt; and Comparer&amp;lt;T&amp;gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="compare-strings"&gt;Compare Strings&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Returns 0 when equal, -1 when a &amp;lt; b and 1 when a &amp;gt; b&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Is a equal to b? {0}&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;Comparer&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;DefaultInvariant&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Compare&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="reverse-sort"&gt;Reverse Sort&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;Program&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;ArrayList&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ArrayList&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;AddRange&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] { &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Aloha&amp;#34;&lt;/span&gt; });&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Sort&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;s&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Sort&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ReverseSort&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;s&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;ReverseSort&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;IComparer&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Compare&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;().&lt;span style="color:#268bd2"&gt;CompareTo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>DeflateStream Class</title><link>/archive/exam-70-536/deflatestream/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/deflatestream/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Used to compress and decompress data.&lt;/li&gt;&#10;&lt;li&gt;Slightly smaller result than &lt;a href="/archive/exam-70-536/gzipstream/" title="gzipstream"&gt;GZipStream&lt;/a&gt; because of lack of header information.&lt;/li&gt;&#10;&lt;li&gt;Use for internal use in your own application.&lt;/li&gt;&#10;&lt;li&gt;Works like a &lt;a href="/archive/exam-70-536/bufferedstream/" title="bufferedstream"&gt;BufferedStream&lt;/a&gt; as it sits on top of another stream.&lt;/li&gt;&#10;&lt;li&gt;Limited to files up to 4GB (uncompressed).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close on a stream.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="compress-file"&gt;Compress File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenRead&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;fileOut&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenWrite&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\TestComp.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;DeflateStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;compress&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DeflateStream&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;fileOut&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;CompressionMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Compress&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;byte&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;byte&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Read&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;compress&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;compress&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;fileOut&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="decompress-file"&gt;Decompress File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;compressedFile&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenRead&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\TestComp.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;DeflateStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;decompress&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DeflateStream&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;compressedFile&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;CompressionMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Decompress&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;read&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;decompress&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;read&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadToEnd&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;read&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;decompress&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;compressedFile&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Delegate Class</title><link>/archive/exam-70-536/delegate/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/delegate/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Holds a reference to a method.&lt;/li&gt;&#10;&lt;li&gt;Declared as a single line, the framework provides the underlying implementation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A delegate should contain 2 parameters, an object sender and event arguments.&lt;/li&gt;&#10;&lt;li&gt;You should derive from EventArgs to supply custom event data.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="simple-delegate"&gt;Simple Delegate&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;delegate&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyEventHandler&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;sender&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;EventArgs&lt;/span&gt; &lt;span style="color:#268bd2"&gt;e&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Directory Class and DirectoryInfo Class</title><link>/archive/exam-70-536/dirinfo/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/dirinfo/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;DirectoryInfo&#10;&lt;ul&gt;&#10;&lt;li&gt;Extends FileSystemInfo with directory specific operations.&lt;/li&gt;&#10;&lt;li&gt;It is possible to create a DirectoryInfo object for a non-existent directory.&lt;/li&gt;&#10;&lt;li&gt;GetDirectories and GetFiles allow the use of wildcards.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="create-subdir"&gt;Create SubDir&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;DirectoryInfo&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DirectoryInfo&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Create&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CreateSubdirectory&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Subtest&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;dir&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Parent&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetDirectories&lt;/span&gt;())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;dir&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;FullName&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="set-current-directory"&gt;Set Current Directory&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Directory&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetCurrentDirectory&lt;/span&gt;()); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Returns a &amp;#39;bin&amp;#39; Debug/Release directory&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Directory&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SetCurrentDirectory&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Directory&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetCurrentDirectory&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>DriveInfo Class and DriveType Enumeration</title><link>/archive/exam-70-536/driveinfo/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/driveinfo/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;DriveInfo&#10;&lt;ul&gt;&#10;&lt;li&gt;Will not work on non-existent drives.&lt;/li&gt;&#10;&lt;li&gt;AvailableFreeSpace returns the freeBytesForUser.&lt;/li&gt;&#10;&lt;li&gt;TotalFreeSpace returns the freeBytes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="get-drive-information"&gt;Get Drive Information&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;Program&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;DriveInfo&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DriveInfo&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;DriveInfo&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DriveInfo&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;WriteDriveInfo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;WriteDriveInfo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;WriteDriveInfo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;DriveInfo&lt;/span&gt; &lt;span style="color:#268bd2"&gt;drive&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;try&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Format&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;{0} ({1}): {2}&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;drive&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;DriveType&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;drive&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;DriveFormat&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;drive&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;VolumeLabel&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Format&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;{0} / {1}&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;drive&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;TotalFreeSpace&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Humanize&lt;/span&gt;(), &lt;span style="color:#268bd2"&gt;drive&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;TotalSize&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Humanize&lt;/span&gt;()));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;catch&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;DriveNotFoundException&lt;/span&gt; &lt;span style="color:#268bd2"&gt;dex&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;dex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Message&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;SizeExtensions&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Credits to http://blogs.interakting.co.uk/brad/archive/2008/01/24/C-Getting-a-user-friendly-file-size-as-a-string.aspx&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Humanize&lt;/span&gt;(&lt;span style="color:#859900"&gt;this&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;long&lt;/span&gt; &lt;span style="color:#268bd2"&gt;bytes&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;double&lt;/span&gt; &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;bytes&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;format&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] { &lt;span style="color:#2aa198"&gt;&amp;#34;{0} bytes&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} KB&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} MB&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} GB&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} TB&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} PB&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} EB&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} ZB&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;{0} YB&amp;#34;&lt;/span&gt; };&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;i&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;while&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#268bd2"&gt;format&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt; - &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; &amp;gt;= &lt;span style="color:#2aa198;font-weight:bold"&gt;1024&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; = (&lt;span style="color:#2aa198;font-weight:bold"&gt;100&lt;/span&gt; * &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; / &lt;span style="color:#2aa198;font-weight:bold"&gt;1024&lt;/span&gt;) / &lt;span style="color:#2aa198;font-weight:bold"&gt;100.0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;i&lt;/span&gt;++;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Format&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;format&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;i&lt;/span&gt;], &lt;span style="color:#268bd2"&gt;s&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;###,###,##0.##&amp;#34;&lt;/span&gt;)); &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="get-all-drives"&gt;Get All Drives&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;drive&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DriveInfo&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetDrives&lt;/span&gt;())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;WriteDriveInfo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;drive&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Encode text by using Encoding classes</title><link>/archive/exam-70-536/encoding/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/encoding/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides information about Encodings.&lt;/li&gt;&#10;&lt;li&gt;Default .NET Encoding is UTF-16.&lt;/li&gt;&#10;&lt;li&gt;Notepad has trouble displaying UTF-7 and UTF-32 encoded files, even though the file has been properly encoded.&lt;/li&gt;&#10;&lt;li&gt;Remember to specify the Encoding when reading a file!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When in doubt, accept the default UTF-16 encoding.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="get-available-encodings"&gt;Get Available Encodings&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;EncodingInfo&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;e&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;Encoding&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetEncodings&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;enc&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;e&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;{0}: {1}, {2}&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;enc&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CodePage&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;enc&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Name&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;enc&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;DisplayName&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="check-different-encodings"&gt;Check Different Encodings&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;u7&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\u7.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;Encoding&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;UTF7&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;u8&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\u8.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;Encoding&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;UTF8&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;u16&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\u16.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;Encoding&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Unicode&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;u32&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\u32.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;Encoding&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;UTF32&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;hello&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u7&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;hello&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u8&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;hello&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u16&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;hello&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;hello&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u7&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u8&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u16&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;u32&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Now view each file in Notepad, and it&amp;#39;s properties for the size&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>EventArgs Class</title><link>/archive/exam-70-536/eventargs/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/eventargs/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Defines the arguments to pass in an event.&lt;/li&gt;&#10;&lt;li&gt;The EventArgs class is used to raise an event without any data.&#10;&lt;ul&gt;&#10;&lt;li&gt;Derive from EventArgs when you need to pass custom data, &lt;a href="/archive/exam-70-536/eventargs/#custom_event_arguments"&gt;demonstrated below&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Always use a class to pass event data via a delegate instead of defining separate parameters for each piece of event data.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="custom-event-arguments"&gt;Custom Event Arguments&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyEventArgs&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;EventArgs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_someData&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;someEventData&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_someData&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;someEventData&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>EventHandler Delegates</title><link>/archive/exam-70-536/eventhandler/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/eventhandler/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides an easier way to define events, without having to declare a delegate.&lt;/li&gt;&#10;&lt;li&gt;The EventHandler delegate is used for events without data, while the EventHandler&amp;lt;T&amp;gt; delegate is used with your own EventArgs class.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Implement the &lt;a href="/archive/exam-70-536/idisposable/" title="idisposable"&gt;IDisposable interface&lt;/a&gt; when working with events to prevent memory leaks.&#10;&lt;ul&gt;&#10;&lt;li&gt;Read &lt;a href="http://www.danrigsby.com/blog/index.php/2008/03/09/net-eventhandlers-best-practices/" title="http://www.danrigsby.com/blog/index.php/2008/03/09/net-eventhandlers-best-practices/"&gt;.Net EventHandlers - Best Practices&lt;/a&gt; for more information.&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="/archive/exam-70-536/eventhandler/#disposing_event_listeners"&gt;example below&lt;/a&gt; on how to implement.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;In C# 3.0 it is possible to omit the null check of an event by using the Null Pattern in the constructor to make sure there is always a listener.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="event-with-custom-eventargs"&gt;Event With Custom EventArgs&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyEventArgs&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;EventArgs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_someData&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;someEventData&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_someData&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;someEventData&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;Program&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;event&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;MyOtherEvent&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Test&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Program&lt;/span&gt; &lt;span style="color:#268bd2"&gt;p&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Program&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;//p.MyEvent += new Program.MyEventHandler(p_MyEvent);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;p&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;MyOtherEvent&lt;/span&gt; += &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;&amp;gt;(&lt;span style="color:#268bd2"&gt;p_MyOtherEvent&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;p_MyOtherEvent&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;sender&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt; &lt;span style="color:#268bd2"&gt;e&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;NotImplementedException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="disposing-event-listeners"&gt;Disposing Event Listeners&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;Program&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Uncommenting the next line will not cause the program to crash,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// because there is always a handler present for SomeEvent. (see constructor)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SomeEvent&lt;/span&gt; += &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;&amp;gt;(&lt;span style="color:#268bd2"&gt;a_SomeEvent&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SomeMethod&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a_SomeEvent&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;sender&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt; &lt;span style="color:#268bd2"&gt;e&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;e&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SomeData&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyEventArgs&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;EventArgs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_someData&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;SomeData&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_someData&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;someEventData&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_someData&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;someEventData&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;DisposableClass&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;IDisposable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900"&gt;event&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;_someEvent&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;event&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;SomeEvent&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;add&lt;/span&gt; { &lt;span style="color:#268bd2"&gt;_someEvent&lt;/span&gt; += &lt;span style="color:#859900"&gt;value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;remove&lt;/span&gt; { &lt;span style="color:#268bd2"&gt;_someEvent&lt;/span&gt; -= &lt;span style="color:#859900"&gt;value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;SomeEvent&lt;/span&gt; += (&lt;span style="color:#268bd2"&gt;s&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;e&lt;/span&gt;) =&amp;gt; { };&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;SomeMethod&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;_someEvent&lt;/span&gt;(&lt;span style="color:#859900"&gt;this&lt;/span&gt;, &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyEventArgs&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;GC&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SuppressFinalize&lt;/span&gt;(&lt;span style="color:#859900"&gt;this&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;protected&lt;/span&gt; &lt;span style="color:#859900"&gt;virtual&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;disposing&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (!&lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;disposing&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Dispose managed resources.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;_someEvent&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Release unmanaged resources.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ~&lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Exception classes</title><link>/archive/exam-70-536/exceptionclasses/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/exceptionclasses/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;All .NET exceptions derive from the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.systemexception.aspx" title="http://msdn2.microsoft.com/en-us/library/system.systemexception.aspx"&gt;System.SystemException&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;li&gt;All custom exceptions derive from the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.exception.aspx" title="http://msdn2.microsoft.com/en-us/library/system.exception.aspx"&gt;System.Exception&lt;/a&gt; class.&#10;&lt;ul&gt;&#10;&lt;li&gt;For most applications, derive custom exceptions from the Exception class. It was originally thought that custom exceptions should derive from the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.applicationexception.aspx" title="http://msdn2.microsoft.com/en-us/library/system.applicationexception.aspx"&gt;ApplicationException&lt;/a&gt; class; however in practice this has not been found to add significant value. (From &lt;a href="http://msdn2.microsoft.com/en-us/library/seyhszts.aspx" title="http://msdn2.microsoft.com/en-us/library/seyhszts.aspx"&gt;MSDN&lt;/a&gt;)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;The try/catch structure will use the first catch which applies. Order catches from most specific to most general in the code.&lt;/li&gt;&#10;&lt;li&gt;Finally will always be executed, whether an exception got thrown or not.&lt;/li&gt;&#10;&lt;li&gt;A try/catch/finally construct has multiple separated scopes, &lt;a href="/archive/exam-70-536/exceptionclasses/#scopes"&gt;demonstrated below&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;End custom exception classes with &amp;lsquo;Exception&amp;rsquo;.&lt;/li&gt;&#10;&lt;li&gt;Implement the three recommended common constructors, as shown in the &lt;a href="/archive/exam-70-536/exceptionclasses/#constructors"&gt;example&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="scopes"&gt;Scopes&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;try&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// a and b are accessible.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;catch&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;Exception&lt;/span&gt; &lt;span style="color:#268bd2"&gt;e&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// a and c are accessible.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;finally&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// a and d are accessible.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="constructors"&gt;Constructors&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;using&lt;/span&gt; &lt;span style="color:#268bd2"&gt;System&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;EmployeeListNotFoundException&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;Exception&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EmployeeListNotFoundException&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EmployeeListNotFoundException&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;message&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; : &lt;span style="color:#859900"&gt;base&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;message&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;EmployeeListNotFoundException&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;message&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;Exception&lt;/span&gt; &lt;span style="color:#268bd2"&gt;inner&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; : &lt;span style="color:#859900"&gt;base&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;message&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;inner&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>File Class and FileInfo Class</title><link>/archive/exam-70-536/finfo/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/finfo/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;FileInfo&#10;&lt;ul&gt;&#10;&lt;li&gt;Extends FileSystemInfo with file specific operations.&lt;/li&gt;&#10;&lt;li&gt;It is possible to create a FileInfo object for a non-existent file.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;File&#10;&lt;ul&gt;&#10;&lt;li&gt;Contains static methods allowing you to perform operations without a FileInfo instance.&lt;/li&gt;&#10;&lt;li&gt;Most methods perform atomic operations when writing and reading files.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="encrypt-file"&gt;Encrypt File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileInfo&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FileInfo&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;\\davidcxp\Public\Hello.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Encrypt&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// At this point, the file will be encrypted at NTFS level&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// When you have colors enabled in Explorer, it&amp;#39;ll be green.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Decrypt&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="replace--backup-file"&gt;Replace &amp;amp; Backup File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileInfo&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FileInfo&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Hello.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Moves Hello.txt to OtherHello.txt and backs up OtherHello.txt to BackupHello.txt&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Hello.txt and OtherHello.txt has to exist.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Replace performs a call to ReplaceFile in kernel32.dll in the background&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Replace&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\OtherHello.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\BackupHello.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="non-existent-file"&gt;Non-Existent File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileInfo&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FileInfo&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\bla.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Exists&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="writing-files"&gt;Writing Files&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteAllText&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Overwrites Test.txt if it exists&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;AppendAllText&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34; There!&amp;#34;&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Appends or creates Text.txt&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>FileStream Class</title><link>/archive/exam-70-536/filestream/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/filestream/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides a file specific implementation of a Stream.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close on a stream.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="read-a-file"&gt;Read a File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// FileStream is simply a stream around a file, overriding Stream methods&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;FileMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Open&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;while&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Position&lt;/span&gt; != &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;((&lt;span style="color:#859900;font-weight:bold"&gt;char&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadByte&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>FileSystemInfo Class and FileSystemWatcher Class</title><link>/archive/exam-70-536/fsinfo/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/fsinfo/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;FileSystemInfo&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;FileSystemInfo forms the base for FileInfo and DirectoryInfo, but not DriveInfo.&lt;/li&gt;&#10;&lt;li&gt;Information contained by FileSystemInfo is cached on first call, use Refresh() to update it.&lt;/li&gt;&#10;&lt;li&gt;Absolute, Relative and UNC paths are allowed as format.&lt;/li&gt;&#10;&lt;li&gt;Get information from Attributes using bitwise operators.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;FileSystemWatcher&lt;/p&gt;</description></item><item><title>Generic Dictionary class</title><link>/archive/exam-70-536/genericdictionary/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/genericdictionary/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Generic version of the &lt;a href="/archive/exam-70-536/hashtable/" title="hashtable"&gt;Hashtable&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;li&gt;Retains the order in which items were added.&lt;/li&gt;&#10;&lt;li&gt;Contains &lt;a href="/archive/exam-70-536/keyvaluepair/" title="keyvaluepair"&gt;KeyValuePair&amp;lt;K, T&amp;gt;&lt;/a&gt; internally.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Generic KeyValuePair structure</title><link>/archive/exam-70-536/keyvaluepair/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/keyvaluepair/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Internal representation of the &lt;a href="/archive/exam-70-536/genericdictionary/" title="genericdictionary"&gt;generic Dictionary&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Generic List class</title><link>/archive/exam-70-536/genericlist/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/genericlist/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Generic version of the &lt;a href="/archive/exam-70-536/arraylist/" title="arraylist"&gt;ArrayList&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;li&gt;Supports delegates for sorting, &lt;a href="/archive/exam-70-536/genericlist/#sorting"&gt;see below&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="sorting"&gt;Sorting&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;&amp;gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Sort&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IntComparison&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;i&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;i&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;IntComparison&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CompareTo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;y&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Generic List.Enumerator structure, and Generic SortedList class</title><link>/archive/exam-70-536/genericsortedlist/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/genericsortedlist/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Generic version of the &lt;a href="/archive/exam-70-536/arraylist/" title="arraylist"&gt;Arraylist&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;li&gt;Sorted version of the &lt;a href="/archive/exam-70-536/genericlist/" title="genericlist"&gt;generic List&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;li&gt;Automatically sorts items based on the key.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Generic Queue class</title><link>/archive/exam-70-536/genericqueue/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/genericqueue/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Generic version of the &lt;a href="/archive/exam-70-536/queue/" title="queue"&gt;Queue&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Generic SortedDictionary class</title><link>/archive/exam-70-536/genericsorteddictionary/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/genericsorteddictionary/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Generic version of the &lt;a href="/archive/exam-70-536/hashtable/" title="hashtable"&gt;Hashtable&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;li&gt;Sorted version of the &lt;a href="/archive/exam-70-536/genericdictionary/" title="genericdictionary"&gt;generic Dictionary&lt;/a&gt; class.&lt;/li&gt;&#10;&lt;li&gt;Contains &lt;a href="/archive/exam-70-536/keyvaluepair/" title="keyvaluepair"&gt;KeyValuePair&amp;lt;K, T&amp;gt;&lt;/a&gt; internally.&lt;/li&gt;&#10;&lt;li&gt;Automatically sorts items based on the key.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Generic Types</title><link>/archive/exam-70-536/generictypes/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/generictypes/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Allows you to use placeholders for parameters, which get defined later by the caller.&lt;/li&gt;&#10;&lt;li&gt;Allows for strongly typed collections, which enable compile-time checking of types.&lt;/li&gt;&#10;&lt;li&gt;Requires the developer to write generic code, which is valid for all types of T.&#10;&lt;ul&gt;&#10;&lt;li&gt;Can be avoided by using constraints on allowed types for T, &lt;a href="/archive/exam-70-536/generictypes/#generic_placeholder"&gt;demonstrated below&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;You can only use 1 class as a constraint, but multiple interfaces.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa479858.aspx" title="http://msdn.microsoft.com/en-us/library/aa479858.aspx"&gt;Generics FAQ: Best Practices&lt;/a&gt; - MSDN document describing possible problems/solutions with generics.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="generic-placeholder"&gt;Generic Placeholder&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyHolder&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;T&lt;/span&gt;&amp;gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;//where T: struct&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;//where T: MyNumber&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;//where T: class&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;//where T: class, IComparable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;//where T: new()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#268bd2"&gt;T&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_thing&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;T&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Thing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_thing&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyHolder&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;T&lt;/span&gt; &lt;span style="color:#268bd2"&gt;thing&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_thing&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;thing&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyHolder&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;nr&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyHolder&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;&amp;gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyHolder&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;name&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyHolder&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;CumpsD&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;nr&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Thing&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;name&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Thing&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Group Class and GroupCollection Class</title><link>/archive/exam-70-536/group/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/group/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Contains the named and unnamed results of matches in a &lt;a href="/archive/exam-70-536/regex/" title="regex"&gt;regex&lt;/a&gt;.&#10;&lt;ul&gt;&#10;&lt;li&gt;Unnamed results are numbered starting from 1.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="scanning-text"&gt;Scanning Text&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;input&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;&amp;#34;The dog ate a bone.&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;@&amp;#34;^The (?&amp;lt;animal&amp;gt;\w+)\b ate (?&amp;lt;food&amp;gt;.+)\.$&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Match&lt;/span&gt; &lt;span style="color:#268bd2"&gt;m&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Match&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;input&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Format&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Animal: {0}, Food: {1}!&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;m&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Groups&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;animal&amp;#34;&lt;/span&gt;], &lt;span style="color:#268bd2"&gt;m&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Groups&lt;/span&gt;[&lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;]));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>GZipStream Class</title><link>/archive/exam-70-536/gzipstream/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/gzipstream/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Used to compress and decompress data.&lt;/li&gt;&#10;&lt;li&gt;Slightly larger result than &lt;a href="/archive/exam-70-536/deflatestream/" title="deflatestream"&gt;DeflateStream&lt;/a&gt; because of extra header information.&lt;/li&gt;&#10;&lt;li&gt;Use for files that need to be able to be opened with gzip.&lt;/li&gt;&#10;&lt;li&gt;Works like a &lt;a href="/archive/exam-70-536/bufferedstream/" title="bufferedstream"&gt;BufferedStream&lt;/a&gt; as it sits on top of another stream.&lt;/li&gt;&#10;&lt;li&gt;Limited to files up to 4GB (uncompressed).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close on a stream.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="compress-file"&gt;Compress File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenRead&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;fileOut&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenWrite&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\TestComp.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;GZipStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;compress&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;GZipStream&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;fileOut&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;CompressionMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Compress&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;byte&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;byte&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Read&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;compress&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;buffer&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;compress&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;fileIn&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;fileOut&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="decompress-file"&gt;Decompress File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;compressedFile&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenRead&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\TestComp.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;GZipStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;decompress&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;GZipStream&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;compressedFile&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;CompressionMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Decompress&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;read&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;decompress&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;read&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadToEnd&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;read&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;decompress&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;compressedFile&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>HashTable Class</title><link>/archive/exam-70-536/hashtable/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/hashtable/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Key-value pair based collection.&lt;/li&gt;&#10;&lt;li&gt;Contains DictionaryEntry objects.&lt;/li&gt;&#10;&lt;li&gt;Not accessible by index, only by key.&lt;/li&gt;&#10;&lt;li&gt;Values are returned based on the hash value when doing a foreach.&lt;/li&gt;&#10;&lt;li&gt;Internally uses hashes to store objects, derived from the GetHashCode method on each object.&#10;&lt;ul&gt;&#10;&lt;li&gt;Hashes are used for equality of objects.&lt;/li&gt;&#10;&lt;li&gt;No duplicate hashes can occur.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use a &lt;a href="/archive/exam-70-536/genericdictionary/" title="genericdictionary"&gt;generic collection&lt;/a&gt; instead of the object-based HashTable.&lt;/li&gt;&#10;&lt;li&gt;Implement GetHashCode and Equals in custom objects when you need HashTable to treat objects as the same.&lt;/li&gt;&#10;&lt;li&gt;Use a &lt;a href="/archive/exam-70-536/specialdictionary/" title="specialdictionary"&gt;ListDictionary&lt;/a&gt; or &lt;a href="/archive/exam-70-536/specialdictionary/" title="specialdictionary"&gt;HybridDictionary&lt;/a&gt; when working with smaller collections than 10 or unknown size collections.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="adding-and-removing-elements"&gt;Adding and Removing Elements&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Hashtable&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Hashtable&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key0&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;] + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;DictionaryEntry&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;d&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;v&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Values&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;v&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Remove&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;k&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Keys&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;k&lt;/span&gt;]); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>ICloneable Interface</title><link>/archive/exam-70-536/icloneable/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/icloneable/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Enable objects to be cloned.&lt;/li&gt;&#10;&lt;li&gt;Does not specify if you need to implement deep-copy or shallow-copy. (Problematic in public APIs)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Avoid using ICloneable ;)&#10;&lt;ul&gt;&#10;&lt;li&gt;Read &lt;a href="http://blogs.msdn.com/brada/archive/2004/05/03/125427.aspx" title="http://blogs.msdn.com/brada/archive/2004/05/03/125427.aspx"&gt;Should we Obsolete ICloneable&lt;/a&gt;, founding member of the CLR stating in 2004 to avoid it.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="object-cloning"&gt;Object Cloning&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyNumber&lt;/span&gt;: &lt;span style="color:#268bd2"&gt;ICloneable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;X&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;set&lt;/span&gt; { &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#859900"&gt;value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#region&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ICloneable&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Members&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Clone&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#endregion&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = (&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Clone&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt; += &lt;span style="color:#2aa198;font-weight:bold"&gt;100&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Incremented to display b.X does not get incremented, while c.X does.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Prints 110&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Prints 10&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Prints 110&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>IComparable Interface</title><link>/archive/exam-70-536/icomparable/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/icomparable/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;IComparable is required for sorting.&lt;/li&gt;&#10;&lt;li&gt;CompareTo is used for sorting, Equals is used to compare equality. (&lt;a href="/archive/exam-70-536/iequatable/"&gt;IEquatable interface&lt;/a&gt;)&#10;&lt;ul&gt;&#10;&lt;li&gt;Returns less than 0, 0 or greater than 0 to indicate how another object relates to the current one.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;For objects A, B and C, the following must be true:&lt;/li&gt;&#10;&lt;li&gt;A.CompareTo(A) is required to return zero.&lt;/li&gt;&#10;&lt;li&gt;If A.CompareTo(B) returns zero, then B.CompareTo(A) is required to return zero.&lt;/li&gt;&#10;&lt;li&gt;If A.CompareTo(B) returns zero and B.CompareTo(C) returns zero, then A.CompareTo(C) is required to return zero.&lt;/li&gt;&#10;&lt;li&gt;If A.CompareTo(B) returns a value other than zero, then B.CompareTo(A) is required to return a value of the opposite sign.&lt;/li&gt;&#10;&lt;li&gt;If A.CompareTo(B) returns a value x not equal to zero, and B.CompareTo(C) returns a value y of the same sign as x, then A.CompareTo(C) is required to return a value of the same sign as x and y.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="custom-sorting"&gt;Custom Sorting&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;struct&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyPoint&lt;/span&gt;: &lt;span style="color:#268bd2"&gt;IComparable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;X&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Y&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#region&lt;/span&gt; &lt;span style="color:#268bd2"&gt;IComparable&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Members&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;CompareTo&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;obj&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;obj&lt;/span&gt; &lt;span style="color:#859900"&gt;is&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt; &lt;span style="color:#268bd2"&gt;other&lt;/span&gt; = (&lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;obj&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CompareTo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;other&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;) == &lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CompareTo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;other&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Y&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;CompareTo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;other&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;NotSupportedException&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;obj is not a MyPoint&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#endregion&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;&amp;gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;3&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;4&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;15&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;list&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Sort&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt; &lt;span style="color:#268bd2"&gt;p&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;list&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;p&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;Will Print:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;(4, 1)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;(10, 2)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;(10, 3)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;(10, 5)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;(15, 1)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;*/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>IConvertible Interface</title><link>/archive/exam-70-536/iconvertible/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/iconvertible/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Enables a class to be converted to a base type such as Boolean, Byte, Double, or String.&lt;/li&gt;&#10;&lt;li&gt;C# allows &lt;em&gt;widening conversion&lt;/em&gt; without any casting, e.g.: going from int to double, &lt;a href="/archive/exam-70-536/iconvertible/#widening_conversion"&gt;see below&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;Narrowing conversion&lt;/em&gt; requires explicit conversion.&lt;/li&gt;&#10;&lt;li&gt;Overloading operators allows for implicit and explicit conversion of custom types, as &lt;a href="/archive/exam-70-536/iconvertible/#overloading_operators"&gt;demonstrated below&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;Implementing IConvertible allows the use of Convert with your custom type.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="widening-conversion"&gt;Widening conversion&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;i&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;double&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;1.0001&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;d&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;i&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Compiles without casting.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="narrowing-conversion"&gt;Narrowing Conversion&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Int16&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Int32&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;double&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = (&lt;span style="color:#268bd2"&gt;Int16&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// a = b will not be allowed, narrowing!&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = (&lt;span style="color:#268bd2"&gt;Int16&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// a = c will not be allowed, narrowing!&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed, widening&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = (&lt;span style="color:#268bd2"&gt;Int32&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// b = c will not be allowed, narrowing!&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed, widening&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed, widening&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="overloading-operators"&gt;Overloading Operators&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;Program&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; ;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed because of the &amp;#39;implicit&amp;#39; operator&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed because of the string implicit operator,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// don&amp;#39;t do this however!! Way to error-prone!&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;&amp;#34;7&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed because of the &amp;#39;explicit&amp;#39; operator&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = (&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyPlaceholder&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt; { &lt;span style="color:#859900"&gt;get&lt;/span&gt;; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900"&gt;set&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#859900"&gt;value&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt; = &lt;span style="color:#859900"&gt;value&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;implicit&lt;/span&gt; &lt;span style="color:#859900"&gt;operator&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;arg&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt; &lt;span style="color:#268bd2"&gt;obj&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;arg&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;obj&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;implicit&lt;/span&gt; &lt;span style="color:#859900"&gt;operator&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;arg&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt; &lt;span style="color:#268bd2"&gt;obj&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Convert&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToInt32&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;arg&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;obj&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;explicit&lt;/span&gt; &lt;span style="color:#859900"&gt;operator&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt; &lt;span style="color:#268bd2"&gt;arg&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;arg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="implementing-iconvertible"&gt;Implementing IConvertible&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;Program&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed because of the IConvertible interface&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;Convert&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToInt32&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Allowed because of the IConvertible interface&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Convert&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToDouble&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Not Allowed because of the InvalidCastException&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Convert&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToDateTime&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyPlaceholder&lt;/span&gt;: &lt;span style="color:#268bd2"&gt;IConvertible&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt; { &lt;span style="color:#859900"&gt;get&lt;/span&gt;; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900"&gt;set&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPlaceholder&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#859900"&gt;value&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt; = &lt;span style="color:#859900"&gt;value&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#region&lt;/span&gt; &lt;span style="color:#268bd2"&gt;IConvertible&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Members&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;double&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToDouble&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;) { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;float&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToSingle&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;) { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToInt32&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;) { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;long&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToInt64&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;) { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;) { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;(); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;TypeCode&lt;/span&gt; &lt;span style="color:#268bd2"&gt;GetTypeCode&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;TypeCode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Object&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToBoolean&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;byte&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToByte&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;char&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToChar&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DateTime&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToDateTime&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;decimal&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToDecimal&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;short&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToInt16&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;sbyte&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToSByte&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToType&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Type&lt;/span&gt; &lt;span style="color:#268bd2"&gt;conversionType&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;ushort&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToUInt16&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;uint&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToUInt32&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;ulong&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToUInt64&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;provider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#endregion&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>IDisposable Interface</title><link>/archive/exam-70-536/idisposable/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/idisposable/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Enable assemblies that create an instance of your class to free up any resources the instance has consumed.&lt;/li&gt;&#10;&lt;li&gt;Only implement IDisposable when one of your members implements it, or when you use native resources.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Implement a virtual Dispose(bool) in your base class which combines disposing native and managed resources.&#10;&lt;ul&gt;&#10;&lt;li&gt;Dispose() will call Dispose(true), while the finalizer will call Dispose(false).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;A Dispose method should call the GC.SuppressFinalize method for the object it is disposing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="basic-idisposable-implementation"&gt;Basic IDisposable Implementation&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;DisposableClass&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;IDisposable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;GC&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SuppressFinalize&lt;/span&gt;(&lt;span style="color:#859900"&gt;this&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;protected&lt;/span&gt; &lt;span style="color:#859900"&gt;virtual&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;disposing&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Note that Dispose() is not thread-safe in this form!&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// If thread-safety is required, you need to implement this.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (!&lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;disposing&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Dispose managed resources.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Release unmanaged resources.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ~&lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;SomeMethod&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt;) { &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ObjectDisposedException&lt;/span&gt;(&lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetType&lt;/span&gt;().&lt;span style="color:#268bd2"&gt;Name&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;DisposableSubClass&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;protected&lt;/span&gt; &lt;span style="color:#859900"&gt;override&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;disposing&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (!&lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;try&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;disposing&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Release the managed resources you added in&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// this derived class here.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Release the native unmanaged resources you added&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// in this derived class here.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;_disposed&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;finally&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Call Dispose on your base class.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;base&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Dispose&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;disposing&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;using&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;DisposableClass&lt;/span&gt;())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;SomeMethod&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>IEquatable Interface</title><link>/archive/exam-70-536/iequatable/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/iequatable/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Enables instances of a class to be compared for equality.&#10;&lt;ul&gt;&#10;&lt;li&gt;e.g.: if (a = = b)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Whenever implementing IEquatable, also override Object.Equals and if needed the == and != operator.&#10;&lt;ul&gt;&#10;&lt;li&gt;See &lt;a href="http://www.codeproject.com/KB/dotnet/IEquatable.aspx" title="http://www.codeproject.com/KB/dotnet/IEquatable.aspx"&gt;Implementing IEquatable Properly&lt;/a&gt; for more details.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="comparing-custom-class"&gt;Comparing Custom Class&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyNumber&lt;/span&gt; : &lt;span style="color:#268bd2"&gt;IEquatable&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;X&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;set&lt;/span&gt; { &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#859900"&gt;value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;override&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;GetHashCode&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetHashCode&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;override&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Equals&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt; &lt;span style="color:#268bd2"&gt;obj&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;obj&lt;/span&gt; == &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;) &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;base&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Equals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;obj&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (!(&lt;span style="color:#268bd2"&gt;obj&lt;/span&gt; &lt;span style="color:#859900"&gt;is&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;InvalidCastException&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;The &amp;#39;obj&amp;#39; argument is not a MyNumber object.&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Equals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;obj&lt;/span&gt; &lt;span style="color:#859900"&gt;as&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#region&lt;/span&gt; &lt;span style="color:#268bd2"&gt;IEquatable&lt;/span&gt;&amp;lt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;Members&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Equals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;other&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;other&lt;/span&gt; == &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;other&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt; == &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#endregion&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#859900"&gt;operator&lt;/span&gt; ==(&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReferenceEquals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;)) &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReferenceEquals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;)) &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;object&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReferenceEquals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;)) &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;false&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Equals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#859900"&gt;operator&lt;/span&gt; !=(&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; !(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; == &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Equals&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;)); &lt;span style="color:#93a1a1;font-style:italic"&gt;// True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; == &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>IFormattable Interface</title><link>/archive/exam-70-536/iformattable/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/iformattable/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Enable classes to display themselves with greater control than ToString.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="custom-formats"&gt;Custom Formats&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;struct&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyPoint&lt;/span&gt;: &lt;span style="color:#268bd2"&gt;IFormattable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;X&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Y&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#region&lt;/span&gt; &lt;span style="color:#268bd2"&gt;IFormattable&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Members&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;format&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;IFormatProvider&lt;/span&gt; &lt;span style="color:#268bd2"&gt;formatProvider&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;formattedString&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;if&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;format&lt;/span&gt; != &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;format&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;format&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToLower&lt;/span&gt;(); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;switch&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;format&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;case&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;: &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;formattedString&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;String&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Format&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;({0}, {1})&amp;#34;&lt;/span&gt;, &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;, &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Y&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;break&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;case&lt;/span&gt; &lt;span style="color:#2aa198"&gt;&amp;#34;x&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;formattedString&lt;/span&gt; = &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;break&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;case&lt;/span&gt; &lt;span style="color:#2aa198"&gt;&amp;#34;y&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;formattedString&lt;/span&gt; = &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Y&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;break&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;default&lt;/span&gt;: &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;throw&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FormatException&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;String&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Format&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Invalid format string: &amp;#39;{0}&amp;#39;.&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;format&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;formattedString&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;#endregion&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;15&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;The point&amp;#39;s value is {0}&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;The point&amp;#39;s x value is {0:x}&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;The point&amp;#39;s y value is {0:y}&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Prints:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// The point&amp;#39;s value is (5, 15)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// The point&amp;#39;s x value is 5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// The point&amp;#39;s y value is 15&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>IsolatedStorageFile Class</title><link>/archive/exam-70-536/isolatedstorage/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/isolatedstorage/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Represents a sandbox location to store application specific data in.&lt;/li&gt;&#10;&lt;li&gt;Assembly/Machine store for application-level data.&lt;/li&gt;&#10;&lt;li&gt;Assembly/User store for user-level data.&lt;/li&gt;&#10;&lt;li&gt;Use &lt;a href="/archive/exam-70-536/isolatedstoragefstream/" title="isolatedstoragefstream"&gt;IsolatedStorageFileStream&lt;/a&gt; to work with files in a store.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Don&amp;rsquo;t write your state to local .xml files everywhere on the system, but store them in an IsolatedStorage.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="initialize-store"&gt;Initialize Store&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;IsolatedStorageFile&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;IsolatedStorageFile&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetMachineStoreForAssembly&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;f&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetFileNames&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;f&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>IsolatedStorageFileStream Class</title><link>/archive/exam-70-536/isolatedstoragefstream/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/isolatedstoragefstream/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Represents a sandbox location to store application specific data in.&lt;/li&gt;&#10;&lt;li&gt;Assembly/Machine store for application-level data.&lt;/li&gt;&#10;&lt;li&gt;Assembly/User store for user-level data.&lt;/li&gt;&#10;&lt;li&gt;File paths are relative inside a store.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Don&amp;rsquo;t write your state to local .xml files everywhere on the system, but store them in an IsolatedStorage.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="using-a-store"&gt;Using a Store&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;IsolatedStorageFile&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;IsolatedStorageFile&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetMachineStoreForAssembly&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;IsolatedStorageFileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;IsolatedStorageFileStream&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;MyState.config&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;FileMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;OpenOrCreate&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello World!&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;storeFile&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetFileNames&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;storeFile&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;IsolatedStorageFileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;IsolatedStorageFileStream&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;MyState.config&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;FileMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Open&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;e&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;d&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;e&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadToEnd&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;e&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Match Class and MatchCollection Class</title><link>/archive/exam-70-536/match/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/match/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Contains the result of matches in a &lt;a href="/archive/exam-70-536/regex/" title="regex"&gt;regex&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="scanning-text"&gt;Scanning Text&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;input&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;&amp;#34;Hello world! Hello!&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;&amp;#34;(?&amp;lt;1&amp;gt;ll)&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;for&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;Match&lt;/span&gt; &lt;span style="color:#268bd2"&gt;m&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Match&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;input&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt;); &lt;span style="color:#268bd2"&gt;m&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Success&lt;/span&gt;; &lt;span style="color:#268bd2"&gt;m&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;m&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;NextMatch&lt;/span&gt;())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;m&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Groups&lt;/span&gt;[&lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;].&lt;span style="color:#268bd2"&gt;Index&lt;/span&gt; + &lt;span style="color:#2aa198"&gt;&amp;#34;: &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;m&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Groups&lt;/span&gt;[&lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="formatting-text"&gt;Formatting Text&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;input&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;&amp;#34;[link=\&amp;#34;http://blog.cumps.be/starting-exam-70-536-study/\&amp;#34;]Starting Exam 70-536 Study[/link]&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;@&amp;#34;\[link=&amp;#34;&amp;#34;(?&amp;lt;link&amp;gt;((.|\n)*?))&amp;#34;&amp;#34;\](?&amp;lt;text&amp;gt;((.|\n)*?))\[\/link\]&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Match&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;input&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt;).&lt;span style="color:#268bd2"&gt;Result&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;${text}: ${link}&amp;#34;&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>MemoryStream Class</title><link>/archive/exam-70-536/memorystream/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/memorystream/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides an in-memory implementation of a Stream.&lt;/li&gt;&#10;&lt;li&gt;Is meant for temporary streams.&#10;&lt;ul&gt;&#10;&lt;li&gt;Possibly to minimize the time you need to hold another stream open, e.g.: locking a file with FileStream.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close on a stream.&#10;&lt;ul&gt;&#10;&lt;li&gt;Make sure to call them in the right order, and not too early. See &lt;a href="/archive/exam-70-536/memorystream/#write_to_file"&gt;the example below&lt;/a&gt;, where closing &amp;lsquo;b&amp;rsquo; to early would close &amp;lsquo;a&amp;rsquo; as well.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="write-to-file"&gt;Write to File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// MemoryStreams are usually temporary streams&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// intended to be written to another stream later&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MemoryStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MemoryStream&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Bye Bye!&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Flush&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;c&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Create&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\TestMem.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteTo&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;c&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>NameValueCollection Class</title><link>/archive/exam-70-536/namevaluecollection/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/namevaluecollection/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Acts like a &lt;a href="/archive/exam-70-536/specialstring/" title="specialstring"&gt;StringDictionary&lt;/a&gt; which can contain duplicate keys.&lt;/li&gt;&#10;&lt;li&gt;Values can be retrieved by key and index.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use a &lt;a href="/archive/exam-70-536/genericdictionary/" title="genericdictionary"&gt;generic collection&lt;/a&gt; instead.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h4 id="simple-usage"&gt;Simple Usage&lt;/h4&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;NameValueCollection&lt;/span&gt; &lt;span style="color:#268bd2"&gt;valueCollection&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;NameValueCollection&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;valueCollection&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Value1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;valueCollection&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Value2&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;valueCollection&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Value3&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;valueCollection&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Keys&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;valueCollection&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;s&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Path Class</title><link>/archive/exam-70-536/path/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/path/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides helper methods for working with file system paths as strings.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="change-extensions"&gt;Change Extensions&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// This does NOT rename the file! It is only a string operation.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Path&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ChangeExtension&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;.doc&amp;#34;&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="combine-paths"&gt;Combine Paths&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;root&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;subdir&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;@&amp;#34;Subtest\&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;combined&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;Path&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Combine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;root&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;subdir&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;combined&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// If there is no trailing slash at Subtest\ this would give&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// C:\Public\Test instead of C:\Public\Test\Subtest&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Path&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetDirectoryName&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;combined&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="create-random-files"&gt;Create Random Files&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Path&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ChangeExtension&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Path&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;GetRandomFileName&lt;/span&gt;(), &lt;span style="color:#2aa198"&gt;&amp;#34;.txt&amp;#34;&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Queue Class</title><link>/archive/exam-70-536/queue/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/queue/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;First-in, First-out logic.&lt;/li&gt;&#10;&lt;li&gt;Acts as a queue of customers in a bank.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use the &lt;a href="/archive/exam-70-536/genericqueue/" title="genericqueue"&gt;generic version of Queue&amp;lt;T&amp;gt;&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="queueing-and-dequeuing"&gt;Queueing and Dequeuing&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Queue&lt;/span&gt; &lt;span style="color:#268bd2"&gt;q&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Queue&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;q&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Enqueue&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;q&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Enqueue&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;q&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Dequeue&lt;/span&gt;() + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;q&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Dequeue&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Queue&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;qg&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Queue&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;&amp;gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;qg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Enqueue&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;qg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Enqueue&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;qg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Dequeue&lt;/span&gt;() + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;qg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Dequeue&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Reference Types</title><link>/archive/exam-70-536/referencetypes/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/referencetypes/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Data stored on the heap, a pointer to that data is stored on the stack.&lt;/li&gt;&#10;&lt;li&gt;The heap gets cleaned by the garbage collector, removing items which don&amp;rsquo;t have a reference to it anymore.&lt;/li&gt;&#10;&lt;li&gt;Copying reference types will only &lt;strong&gt;copy the pointer&lt;/strong&gt;, not duplicate the data.&#10;&lt;ul&gt;&#10;&lt;li&gt;This means altering a reference type through one variable will also be reflected when accessing it through another variable, pointing at the same heap location.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Reference types can be immutable, System.String being the most known one.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use String.Concat, String.Join, String.Format or a StringBuilder when excessively working with strings.&#10;&lt;ul&gt;&#10;&lt;li&gt;See &lt;a href="/archive/2007-09-16-string-concatenation-vs-memory-allocation/"&gt;String Concatenation vs Memory Allocation&lt;/a&gt; for detailed analysis of string operations.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="value-types-vs-reference-types"&gt;Value types vs Reference types&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// ---------------------------------------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Example of reference types.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// ---------------------------------------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Store 5 in a&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Copy the reference to &amp;#39;MyNumber&amp;#39; a into b&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Modify a, but since b is pointing to the same object, b will change too&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Will print 10&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Will print 10&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;class&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyNumber&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;X&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;set&lt;/span&gt; { &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#859900"&gt;value&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyNumber&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="strings"&gt;Strings&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;words&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] { &lt;span style="color:#2aa198"&gt;&amp;#34;Word1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Word2&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Word3&amp;#34;&lt;/span&gt; };&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;String&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Join&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34; | &amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;words&lt;/span&gt;)); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Word1 | Word2 | Word3&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;String&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Concat&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;words&lt;/span&gt;)); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Word1Word2Word3&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StringBuilder&lt;/span&gt; &lt;span style="color:#268bd2"&gt;longString&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StringBuilder&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;longString&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;longString&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Regex Class</title><link>/archive/exam-70-536/regex/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/regex/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Used to work with regular expressions.&lt;/li&gt;&#10;&lt;li&gt;A good free tool to read and create regexs is &lt;a href="http://www.ultrapico.com/Expresso.htm" title="http://www.ultrapico.com/Expresso.htm"&gt;Expresso&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;There are many &lt;a href="http://www.google.be/search?q=regex" title="http://www.google.be/search?q=regex"&gt;good tutorials&lt;/a&gt; around.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Always include the ^ and $ when matching expressions.&#10;&lt;ul&gt;&#10;&lt;li&gt;Without these you will simply check if a string contains the regex, which can expose a security vulnerability.&lt;/li&gt;&#10;&lt;li&gt;See &lt;a href="/archive/exam-70-536/regex/#checking_input"&gt;the example below&lt;/a&gt; for an example on what can happen when forgetting the leading ^.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Start your regex with the @ sign for readability, instead of having to escape backslashes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="checking-input"&gt;Checking Input&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;@&amp;#34;^\d{5}$&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;IsMatch&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;12345&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt;) ? &lt;span style="color:#2aa198"&gt;&amp;#34;Matches!&amp;#34;&lt;/span&gt; : &lt;span style="color:#2aa198"&gt;&amp;#34;No match&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;IsMatch&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;1234&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt;) ? &lt;span style="color:#2aa198"&gt;&amp;#34;Matches!&amp;#34;&lt;/span&gt; : &lt;span style="color:#2aa198"&gt;&amp;#34;No match&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;IsMatch&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;DROP DATABASE YourApp; -- 12345&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;@&amp;#34;\d{5}$&amp;#34;&lt;/span&gt;) ? &lt;span style="color:#2aa198"&gt;&amp;#34;Matches!&amp;#34;&lt;/span&gt; : &lt;span style="color:#2aa198"&gt;&amp;#34;No match&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="replacing-input"&gt;Replacing Input&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;input&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;&amp;#34;The dog ate a bone.&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt; = &lt;span style="color:#2aa198"&gt;@&amp;#34;^The (?&amp;lt;animal&amp;gt;\w+)\b ate (?&amp;lt;food&amp;gt;.+)\.$&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Replace&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;input&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;regex&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Animal: ${animal}, Food: ${food}&amp;#34;&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="using-groups"&gt;Using Groups&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Match&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;Regex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Match&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Wim&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;(?&amp;lt;FirstLetter&amp;gt;.).*&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;x&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Groups&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;FirstLetter&amp;#34;&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Snippets</title><link>/archive/exam-70-536/snippets/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/snippets/</guid><description>&lt;h2 id="operator-overloading"&gt;Operator Overloading&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;struct&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyPoint&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;X&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Y&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt; &lt;span style="color:#859900"&gt;operator&lt;/span&gt; +(&lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Returns a new object, conform to the immutability.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;X&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Y&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="predicates"&gt;Predicates&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;ar&lt;/span&gt; = { &lt;span style="color:#2aa198;font-weight:bold"&gt;3&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;, &lt;span style="color:#2aa198;font-weight:bold"&gt;2&lt;/span&gt; };&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;Array&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;TrueForAll&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;&amp;gt;(&lt;span style="color:#268bd2"&gt;ar&lt;/span&gt;, &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Predicate&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;&amp;gt;(&lt;span style="color:#268bd2"&gt;Check&lt;/span&gt;))); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Returns False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Check&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;target&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;return&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;target&lt;/span&gt; == &lt;span style="color:#2aa198;font-weight:bold"&gt;3&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>SortedList Class</title><link>/archive/exam-70-536/sortedlist/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/sortedlist/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Key-value pair based collection.&lt;/li&gt;&#10;&lt;li&gt;Contains DictionaryEntry objects.&lt;/li&gt;&#10;&lt;li&gt;Accessible by index and key.&lt;/li&gt;&#10;&lt;li&gt;Sorts items when they are added.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use a generic collection instead of the object-based SortedList.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="adding-and-removing-elements"&gt;Adding and Removing Elements&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;SortedList&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;SortedList&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key0&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;] + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;DictionaryEntry&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;d&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;v&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Values&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;v&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Remove&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;k&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Keys&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;k&lt;/span&gt;]); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Specialized Dictionary</title><link>/archive/exam-70-536/specialdictionary/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/specialdictionary/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Special case dictionaries&lt;/li&gt;&#10;&lt;li&gt;ListDictionary&#10;&lt;ul&gt;&#10;&lt;li&gt;Used as a HashTable for fewer than 10 items.&lt;/li&gt;&#10;&lt;li&gt;Implemented as a simple linked list behind the scenes.&lt;/li&gt;&#10;&lt;li&gt;Same interface as HashTable, easy to replace.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;HybridDictionary&#10;&lt;ul&gt;&#10;&lt;li&gt;Used as a HashTable for unknown sizes of items.&lt;/li&gt;&#10;&lt;li&gt;Implemented as a combination between HashTable and ListDictionary.&lt;/li&gt;&#10;&lt;li&gt;Switches over to a HashTable when the collection becomes too big.&lt;/li&gt;&#10;&lt;li&gt;Same interface as HashTable, easy to replace.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;OrderedDictionary&#10;&lt;ul&gt;&#10;&lt;li&gt;Used as a HashTable when you need access to the index.&lt;/li&gt;&#10;&lt;li&gt;A plain dictionary mapping, like a cross between HashTable and ArrayList.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use a &lt;a href="/archive/exam-70-536/genericdictionary/" title="genericdictionary"&gt;generic collection&lt;/a&gt; instead.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="listdictionary-adding-and-removing-elements"&gt;ListDictionary: Adding and Removing Elements&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;ListDictionary&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ListDictionary&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key0&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;] + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;DictionaryEntry&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;d&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;v&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Values&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;v&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Remove&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;k&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Keys&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;k&lt;/span&gt;]); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="hybriddictionary-adding-and-removing-elements"&gt;HybridDictionary: Adding and Removing Elements&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;HybridDictionary&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;HybridDictionary&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key0&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;] + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;DictionaryEntry&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;d&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;v&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Values&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;v&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Remove&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;k&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Keys&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;k&lt;/span&gt;]); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="ordereddictionary-adding-and-removing-elements"&gt;OrderedDictionary: Adding and Removing Elements&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;OrderedDictionary&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;OrderedDictionary&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Add&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key0&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Insert&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Key10&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;Inserted&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;] + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#2aa198"&gt;&amp;#34;Key2&amp;#34;&lt;/span&gt;]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;DictionaryEntry&lt;/span&gt; &lt;span style="color:#268bd2"&gt;d&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;d&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;v&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Values&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;v&lt;/span&gt;); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Remove&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Key1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;RemoveAt&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;foreach&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;k&lt;/span&gt; &lt;span style="color:#859900"&gt;in&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Keys&lt;/span&gt;) { &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;[&lt;span style="color:#268bd2"&gt;k&lt;/span&gt;]); }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Specialized String classes</title><link>/archive/exam-70-536/specialstring/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/specialstring/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;StringCollection&#10;&lt;ul&gt;&#10;&lt;li&gt;Acts as a strongly typed &lt;a href="/archive/exam-70-536/arraylist/" title="arraylist"&gt;ArrayList&lt;/a&gt; of strings. Equivalent to List&amp;lt;string&amp;gt; with generics.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;StringDictionary&#10;&lt;ul&gt;&#10;&lt;li&gt;Acts as a strongly typed &lt;a href="/archive/exam-70-536/hashtable/" title="hashtable"&gt;Hashtable&lt;/a&gt; of strings. Equivalent to Dictionary&amp;lt;string&amp;gt; with generics.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use a &lt;a href="/archive/exam-70-536/genericlist/" title="genericlist"&gt;List&amp;lt;string&amp;gt;&lt;/a&gt; or &lt;a href="/archive/exam-70-536/genericdictionary/" title="genericdictionary"&gt;Dictionary&amp;lt;string, string&amp;gt;&lt;/a&gt; instead.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Stack Class</title><link>/archive/exam-70-536/stack/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/stack/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Last-in, First-out logic.&lt;/li&gt;&#10;&lt;li&gt;Acts as a stack of papers on a desk.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;When possible, use the generic version of Stack&amp;lt;T&amp;gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="push-and-pop"&gt;Push and Pop&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Stack&lt;/span&gt; &lt;span style="color:#268bd2"&gt;s&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Stack&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;s&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Push&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;s&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Push&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;s&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Pop&lt;/span&gt;() + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;s&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Pop&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;sg&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;&amp;gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;sg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Push&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;sg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Push&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;sg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Pop&lt;/span&gt;() + &lt;span style="color:#2aa198"&gt;&amp;#34; &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;sg&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Pop&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Stream Class</title><link>/archive/exam-70-536/stream/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/stream/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A stream is an abstraction of a sequence of bytes, which helps isolating the programmer from the underlying implementation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close on a stream.&#10;&lt;ul&gt;&#10;&lt;li&gt;Calling Close on a Stream flushes any buffered data, essentially calling Flush for you.&lt;/li&gt;&#10;&lt;li&gt;Close releases operating system resources such as file handles, network connections, or memory used for any internal buffering.&lt;/li&gt;&#10;&lt;li&gt;Make use of the finally block in a try/catch/finally when working with a stream, &lt;a href="/archive/exam-70-536/stream/#finally_block"&gt;demonstrated below&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="finally-block"&gt;Finally Block&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;sr&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;text.txt&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;try&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;sr&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadToEnd&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;catch&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;Exception&lt;/span&gt; &lt;span style="color:#268bd2"&gt;ex&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// If there are any problems reading the file, display an error message&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Error reading file: &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;ex&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Message&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;finally&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Close the StreamReader, whether or not an exception occurred&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;sr&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>StreamReader Class and StreamWriter Class</title><link>/archive/exam-70-536/streamreader/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/streamreader/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides extra helper methods intended to read a stream as a string.&lt;/li&gt;&#10;&lt;li&gt;Calling Close() on a StreamReader will close the underlying Stream as well.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remember to call Close on a stream.&lt;/li&gt;&#10;&lt;li&gt;Use &amp;lsquo;using&amp;rsquo; statements when you want the stream to be automatically closed at the end.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="read-a-file"&gt;Read a File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// FileStream is simply a stream around a file, overriding Stream methods&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;FileMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Open&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;while&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Position&lt;/span&gt; != &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Length&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;((&lt;span style="color:#859900;font-weight:bold"&gt;char&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadByte&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Seek&lt;/span&gt;(&lt;span style="color:#2aa198;font-weight:bold"&gt;0&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;SeekOrigin&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Begin&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadToEnd&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="writing-a-file"&gt;Writing a File&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// FileStream is simply a stream around a file, overriding Stream methods&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;FileMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Create&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;using&lt;/span&gt; (&lt;span style="color:#859900;font-weight:bold"&gt;var&lt;/span&gt; &lt;span style="color:#268bd2"&gt;writer&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamWriter&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;writer&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;AutoFlush&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;writer&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// The FileStream has been closed because of the using statement&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;FileStream&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;FileMode&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Open&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StreamReader&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadToEnd&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Close&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Simple version if you only need to read the entire file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;File&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadAllText&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;@&amp;#34;C:\Public\Test.txt&amp;#34;&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>StringBuilder Class</title><link>/archive/exam-70-536/stringbuilder/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/stringbuilder/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A StringBuilder maintains an internal buffer instead of allocating a new string every time.&lt;/li&gt;&#10;&lt;li&gt;Initial buffer size is 16 bytes, but can be passed via the constructor.&lt;/li&gt;&#10;&lt;li&gt;Use a StringBuilder when appending lots of strings.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use StringBuilder when excessively working with strings.&#10;&lt;ul&gt;&#10;&lt;li&gt;See &lt;a href="/archive/2007-09-16-string-concatenation-vs-memory-allocation/"&gt;String Concatenation vs Memory Allocation&lt;/a&gt; for detailed analysis of string operations.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Try to estimate the initial size for a StringBuilder whenever possible, this will avoid unneeded buffer growths.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="concatenating"&gt;Concatenating&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt; &lt;span style="color:#268bd2"&gt;GetBuildString&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;StringBuilder&lt;/span&gt; &lt;span style="color:#268bd2"&gt;builder&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StringBuilder&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;SELECT column1,&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;&#9; column2,&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;&#9; column3,&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;&#9; column4,&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;&#9; column5,&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;&#9; column6,&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34; FROM table1 t1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34; JOIN table2 t2&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Append&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;&#9;ON t1.column1 = t2.column1&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#268bd2"&gt;builder&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>StringReader Class and StringWriter Class</title><link>/archive/exam-70-536/stringreader/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/stringreader/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Used to read and write in-memory strings.&lt;/li&gt;&#10;&lt;li&gt;StringWriter uses a &lt;a href="/archive/exam-70-536/stringbuilder/" title="stringbuilder"&gt;StringBuilder&lt;/a&gt; behind the scenes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="read-and-write-strings"&gt;Read and Write Strings&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StringWriter&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StringWriter&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;Hello World!&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;NewLine&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Write&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;I span two lines!&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;StringReader&lt;/span&gt; &lt;span style="color:#268bd2"&gt;r&lt;/span&gt; = &lt;span style="color:#859900"&gt;new&lt;/span&gt; &lt;span style="color:#268bd2"&gt;StringReader&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;while&lt;/span&gt; (&lt;span style="color:#268bd2"&gt;r&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Peek&lt;/span&gt;() != -&lt;span style="color:#2aa198;font-weight:bold"&gt;1&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;r&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ReadLine&lt;/span&gt;());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>TypeForwardTo Attribute</title><link>/archive/exam-70-536/typeforwarded/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/typeforwarded/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Attribute to indicate a type has moved from one assembly to another.&lt;/li&gt;&#10;&lt;li&gt;Enables you to update your assemblies without recompiling the clients using them.&lt;/li&gt;&#10;&lt;li&gt;Great example can be found at &lt;a href="http://michaelsync.net/2007/07/30/what-is-typeforwardedtoattribute" title="http://michaelsync.net/2007/07/30/what-is-typeforwardedtoattribute"&gt;What is TypeForwardedToAttribute?&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Value Types</title><link>/archive/exam-70-536/valuetypes/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/exam-70-536/valuetypes/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Stored on the stack.&lt;/li&gt;&#10;&lt;li&gt;Contain a value, &lt;strong&gt;not&lt;/strong&gt; a reference.&lt;/li&gt;&#10;&lt;li&gt;Inherit from System.Value&lt;/li&gt;&#10;&lt;li&gt;Exists of built-in types, user-defined types and enumerations.&lt;/li&gt;&#10;&lt;li&gt;Prefer to use Int32 (int) and Double (double) for counters/floating numbers. These are optimized by the framework/hardware.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="/archive/exam-70-536/valuetypes/#nullable_types"&gt;Nullable types&lt;/a&gt; have .HasValue and .Value properties to determine if they have been set.&#10;&lt;ul&gt;&#10;&lt;li&gt;Console.WriteLine( (myBool.HasValue) ? myBool.Value.ToString() : “not set” );&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="/archive/exam-70-536/valuetypes/#structures"&gt;Structures&lt;/a&gt; are value types as well, user-defined value types.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="/archive/exam-70-536/valuetypes/#enums"&gt;Enums&lt;/a&gt; are stored as value types, and primarily used for code readability.&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;object&lt;/em&gt;.GetType().IsValueType returns true for value types.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="good-practice"&gt;Good practice&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Always define the value of a value type upon declaration.&#10;&lt;ul&gt;&#10;&lt;li&gt;Initialize it to null if needed.&lt;/li&gt;&#10;&lt;li&gt;The use of nullable types can help to enable bool variables to store null.&#10;&lt;ul&gt;&#10;&lt;li&gt;Nullable&amp;lt;bool&amp;gt; myBool = null;&lt;/li&gt;&#10;&lt;li&gt;bool? myBool = null;&lt;/li&gt;&#10;&lt;li&gt;Read &lt;a href="http://blogs.msdn.com/kcwalina/archive/2008/07/16/Nullable.aspx" title="http://blogs.msdn.com/kcwalina/archive/2008/07/16/Nullable.aspx"&gt;Nullable&amp;lt;T&amp;gt; Usage Guidelines&lt;/a&gt; however, to avoid using a bool as a tri-state switch.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Use structures for objects which represent a single combined value, which is smaller then 16 bytes.&lt;/li&gt;&#10;&lt;li&gt;Structures should be immutable.&lt;/li&gt;&#10;&lt;li&gt;Don&amp;rsquo;t define a default constructor on a structure.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;h3 id="value-types-vs-reference-types"&gt;Value types vs Reference types&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// ---------------------------------------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// Example of value types holding a value instead of a reference.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#93a1a1;font-style:italic"&gt;// ---------------------------------------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;, &lt;span style="color:#268bd2"&gt;b&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;5&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Store 5 in a&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;b&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;a&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Copy the value of a into b, instead of holding a reference&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;a&lt;/span&gt; = &lt;span style="color:#2aa198;font-weight:bold"&gt;10&lt;/span&gt;; &lt;span style="color:#93a1a1;font-style:italic"&gt;// Store 10 in a, will not affect the value of b, since it&amp;#39;s been copied.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;a&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Will print 10&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#268bd2"&gt;b&lt;/span&gt;); &lt;span style="color:#93a1a1;font-style:italic"&gt;// Will print 5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="nullable-types"&gt;Nullable Types&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:#859900;font-weight:bold"&gt;bool&lt;/span&gt;&amp;gt; &lt;span style="color:#268bd2"&gt;myBool&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;null&lt;/span&gt;; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;((&lt;span style="color:#268bd2"&gt;myBool&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;HasValue&lt;/span&gt;) ? &lt;span style="color:#268bd2"&gt;myBool&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;() : &lt;span style="color:#2aa198"&gt;&amp;#34;not set&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;myBool&lt;/span&gt; = &lt;span style="color:#859900;font-weight:bold"&gt;true&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;((&lt;span style="color:#268bd2"&gt;myBool&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;HasValue&lt;/span&gt;) ? &lt;span style="color:#268bd2"&gt;myBool&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;ToString&lt;/span&gt;() : &lt;span style="color:#2aa198"&gt;&amp;#34;not set&amp;#34;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="structures"&gt;Structures&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;struct&lt;/span&gt; &lt;span style="color:#cb4b16"&gt;MyPoint&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;private&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;X&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Y&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;get&lt;/span&gt; { &lt;span style="color:#859900"&gt;return&lt;/span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt;; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;MyPoint&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;, &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_x&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;x&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#859900"&gt;this&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;_y&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;y&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="enums"&gt;Enums&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#586e75;background-color:#fdf6e3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;enum&lt;/span&gt; &lt;span style="color:#268bd2"&gt;TestEnum&lt;/span&gt; : &lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Value1&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Value2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#859900"&gt;static&lt;/span&gt; &lt;span style="color:#859900"&gt;void&lt;/span&gt; &lt;span style="color:#268bd2"&gt;Main&lt;/span&gt;(&lt;span style="color:#859900;font-weight:bold"&gt;string&lt;/span&gt;[] &lt;span style="color:#268bd2"&gt;args&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;TestEnum&lt;/span&gt; &lt;span style="color:#268bd2"&gt;en&lt;/span&gt; = &lt;span style="color:#268bd2"&gt;TestEnum&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;Value1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;Console&lt;/span&gt;.&lt;span style="color:#268bd2"&gt;WriteLine&lt;/span&gt;((&lt;span style="color:#859900;font-weight:bold"&gt;int&lt;/span&gt;)&lt;span style="color:#268bd2"&gt;en&lt;/span&gt; + &lt;span style="color:#2aa198"&gt;&amp;#34; : &amp;#34;&lt;/span&gt; + &lt;span style="color:#268bd2"&gt;en&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Design Patterns - Proxy Pattern</title><link>/archive/2008-08-16-design-patterns-proxy-pattern/</link><pubDate>Sat, 16 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/2008-08-16-design-patterns-proxy-pattern/</guid><description>&lt;p&gt;&lt;strong&gt;Welcome back&lt;/strong&gt; for another episode in the pattern series! This will also be the &lt;strong&gt;last article&lt;/strong&gt; about Design Patterns, since I&amp;rsquo;ve finished reading the &lt;a href="http://www.amazon.co.uk/gp/product/0596007124?ie=UTF8&amp;amp;tag=destiny-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=0596007124" title="Head First Design Patterns"&gt;&lt;strong&gt;Head First Design Patterns&lt;/strong&gt;&lt;/a&gt; book :)&lt;/p&gt;</description></item><item><title>Design Patterns - State Pattern</title><link>/archive/2008-08-08-design-patterns-state-pattern/</link><pubDate>Fri, 08 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/2008-08-08-design-patterns-state-pattern/</guid><description>&lt;p&gt;It&amp;rsquo;s been &lt;strong&gt;a while&lt;/strong&gt; again, but it&amp;rsquo;s time for another pattern. Today we&amp;rsquo;ll look at the &lt;strong&gt;State Pattern&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Design Patterns - Composite Pattern</title><link>/archive/2008-07-27-design-patterns-composite-pattern/</link><pubDate>Sun, 27 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-27-design-patterns-composite-pattern/</guid><description>&lt;p&gt;It&amp;rsquo;s been a little &lt;strong&gt;while&lt;/strong&gt; again. I blame myself for installing &lt;strong&gt;World Of Warcraft&lt;/strong&gt; again, too addictive. Anyway, time for the &lt;strong&gt;Composite Pattern&lt;/strong&gt;. This is one I&amp;rsquo;m having a &lt;strong&gt;little trouble&lt;/strong&gt; with to describe clearly.&lt;/p&gt;</description></item><item><title>Design Patterns - Iterator Pattern</title><link>/archive/2008-07-23-design-patterns-iterator-pattern/</link><pubDate>Wed, 23 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-23-design-patterns-iterator-pattern/</guid><description>&lt;p&gt;Time for the next part in &lt;a href="/tags/design-patterns/"&gt;&lt;strong&gt;our series&lt;/strong&gt;&lt;/a&gt;, the &lt;strong&gt;Iterator Pattern&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Design Patterns - Template Method Pattern</title><link>/archive/2008-07-22-design-patterns-template-method-pattern/</link><pubDate>Tue, 22 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-22-design-patterns-template-method-pattern/</guid><description>&lt;p&gt;Time for yet another pattern, the &lt;strong&gt;Template Method Pattern&lt;/strong&gt;. Have a look at all the other patterns in &lt;a href="/tags/design-patterns/"&gt;&lt;strong&gt;the series&lt;/strong&gt;&lt;/a&gt; as well.&lt;/p&gt;</description></item><item><title>Design Patterns - Facade Pattern</title><link>/archive/2008-07-20-design-patterns-facade-pattern/</link><pubDate>Sun, 20 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-20-design-patterns-facade-pattern/</guid><description>&lt;p&gt;Time for another, &lt;strong&gt;simple&lt;/strong&gt;, design pattern. The &lt;strong&gt;Facade Pattern&lt;/strong&gt;. I&amp;rsquo;m going to &lt;strong&gt;need a break&lt;/strong&gt; soon, getting a bit burned out, which never is a good thing.&lt;/p&gt;</description></item><item><title>Design Patterns - Adapter Pattern</title><link>/archive/2008-07-16-design-patterns-adapter-pattern/</link><pubDate>Wed, 16 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-16-design-patterns-adapter-pattern/</guid><description>&lt;p&gt;We&amp;rsquo;ve seen &lt;strong&gt;quite a few&lt;/strong&gt; patterns so far, and I&amp;rsquo;m glad so many people like them. They turned out to be the &lt;strong&gt;most popular&lt;/strong&gt; posts I&amp;rsquo;ve ever written when it comes to development. &lt;strong&gt;Thanks!&lt;/strong&gt; :)&lt;/p&gt;</description></item><item><title>Design Patterns - Command Pattern</title><link>/archive/2008-07-15-design-patterns-command-pattern/</link><pubDate>Tue, 15 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-15-design-patterns-command-pattern/</guid><description>&lt;p&gt;What&amp;rsquo;s a lonely &lt;strong&gt;geek&lt;/strong&gt; to do late in the evening? Write about the &lt;strong&gt;Command Pattern&lt;/strong&gt; of course&amp;hellip;&lt;/p&gt;</description></item><item><title>Design Patterns - Generic Singleton Pattern</title><link>/archive/2008-07-15-design-patterns-generic-singleton-pattern/</link><pubDate>Tue, 15 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-15-design-patterns-generic-singleton-pattern/</guid><description>&lt;p&gt;A little follow up from yesterday&amp;rsquo;s &lt;a href="/archive/2008-07-14-design-patterns-singleton-pattern/"&gt;&lt;strong&gt;Singleton Pattern&lt;/strong&gt;&lt;/a&gt;, where I asked for some help on how you would approach a &lt;strong&gt;generic singleton&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Design Patterns - Singleton Pattern</title><link>/archive/2008-07-14-design-patterns-singleton-pattern/</link><pubDate>Mon, 14 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-14-design-patterns-singleton-pattern/</guid><description>&lt;p&gt;Today we&amp;rsquo;ll have a look at a well known pattern, the &lt;strong&gt;Singleton Pattern&lt;/strong&gt;. Most people have already heard about this one.&lt;/p&gt;</description></item><item><title>Design Patterns - Abstract Factory Pattern</title><link>/archive/2008-07-13-design-patterns-abstract-factory-pattern/</link><pubDate>Sun, 13 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-13-design-patterns-abstract-factory-pattern/</guid><description>&lt;p&gt;Time to continue from yesterday&amp;rsquo;s &lt;a href="/archive/2008-07-12-design-patterns-factory-method-pattern/"&gt;&lt;strong&gt;Factory Method Pattern&lt;/strong&gt;&lt;/a&gt; by exploring the &lt;strong&gt;Abstract Factory Pattern&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Design Patterns - Factory Method Pattern</title><link>/archive/2008-07-12-design-patterns-factory-method-pattern/</link><pubDate>Sat, 12 Jul 2008 00:00:00 +0200</pubDate><guid>/archive/2008-07-12-design-patterns-factory-method-pattern/</guid><description>&lt;p&gt;I present you with the &lt;strong&gt;next pattern&lt;/strong&gt; in &lt;a href="/tags/design-patterns/"&gt;our series&lt;/a&gt;, the &lt;strong&gt;Factory Method&lt;/strong&gt;! It took a while to get it out due to a stay in the hospital. (All is fine now :p)&lt;/p&gt;</description></item><item><title>Design Patterns - Decorator Pattern</title><link>/archive/2008-06-29-design-patterns-decorator-pattern/</link><pubDate>Sun, 29 Jun 2008 00:00:00 +0200</pubDate><guid>/archive/2008-06-29-design-patterns-decorator-pattern/</guid><description>&lt;p&gt;Following up on the &lt;a href="/archive/2008-06-27-design-patterns-observer-event-pattern/"&gt;&lt;strong&gt;Observer/Event Pattern&lt;/strong&gt;&lt;/a&gt;, it&amp;rsquo;s time for the third pattern, the &lt;strong&gt;Decorator Pattern&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Design Patterns - Observer/Event Pattern</title><link>/archive/2008-06-27-design-patterns-observer-event-pattern/</link><pubDate>Fri, 27 Jun 2008 00:00:00 +0200</pubDate><guid>/archive/2008-06-27-design-patterns-observer-event-pattern/</guid><description>&lt;p&gt;Yesterday I described the &lt;a href="/archive/2008-06-26-design-patterns-observer-pattern/"&gt;&lt;strong&gt;Observer Pattern&lt;/strong&gt;&lt;/a&gt; and mentioned that the .NET CLR provides this functionality through &lt;strong&gt;events and delegates&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Design Patterns - Observer Pattern</title><link>/archive/2008-06-26-design-patterns-observer-pattern/</link><pubDate>Thu, 26 Jun 2008 00:00:00 +0200</pubDate><guid>/archive/2008-06-26-design-patterns-observer-pattern/</guid><description>&lt;p&gt;Yesterday we saw the &lt;a href="/archive/2008-06-25-design-patterns-strategy-pattern/"&gt;&lt;strong&gt;Strategy Pattern&lt;/strong&gt;&lt;/a&gt;. Today I want to talk about the &lt;strong&gt;Observer Pattern&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Design Patterns - Strategy Pattern</title><link>/archive/2008-06-25-design-patterns-strategy-pattern/</link><pubDate>Wed, 25 Jun 2008 00:00:00 +0200</pubDate><guid>/archive/2008-06-25-design-patterns-strategy-pattern/</guid><description>&lt;p&gt;The first pattern I want to talk about is the &lt;strong&gt;Strategy pattern&lt;/strong&gt;, which always reminds me about the &lt;a href="http://en.wikipedia.org/wiki/Command_&amp;amp;_Conquer" title="Wikipedia - Command &amp;amp; Conquer"&gt;Command &amp;amp; Conquer&lt;/a&gt; games so I&amp;rsquo;ll simply use it as an example :)&lt;/p&gt;</description></item><item><title>Long Absence - Design Patterns</title><link>/archive/2008-06-24-long-absence-design-patterns/</link><pubDate>Tue, 24 Jun 2008 00:00:00 +0200</pubDate><guid>/archive/2008-06-24-long-absence-design-patterns/</guid><description>&lt;p&gt;It&amp;rsquo;s been a while again, real life issues managed to take over all time&amp;hellip; But, I&amp;rsquo;m regaining ground and winning back some of it ;)&lt;/p&gt;</description></item><item><title>Obfuscation - Making Reverse Engineering Harder</title><link>/archive/2007-09-29-obfuscation-making-reverse-engineering-harder/</link><pubDate>Sat, 29 Sep 2007 00:00:00 +0200</pubDate><guid>/archive/2007-09-29-obfuscation-making-reverse-engineering-harder/</guid><description>&lt;p&gt;In a previous article I have demonstrated how &lt;strong&gt;easy&lt;/strong&gt; it is to &lt;a href="/archive/2007-09-06-reverse-engineering-with-reflector-and-reflexil/"&gt;decompile and reverse engineer .NET assemblies&lt;/a&gt; using Reflector and Reflexil. I&amp;rsquo;ve also shown that &lt;a href="/archive/2007-09-15-code-signing-as-reverse-engineering-protection/"&gt;applying a strong name&lt;/a&gt; to your assembly does &lt;strong&gt;not protect your code&lt;/strong&gt; from reverse engineering. So, &lt;strong&gt;what else&lt;/strong&gt; is left?&lt;/p&gt;</description></item><item><title>String Concatenation vs Memory Allocation</title><link>/archive/2007-09-16-string-concatenation-vs-memory-allocation/</link><pubDate>Sun, 16 Sep 2007 00:00:00 +0200</pubDate><guid>/archive/2007-09-16-string-concatenation-vs-memory-allocation/</guid><description>&lt;p&gt;Over the years, &lt;a href="http://blogs.msdn.com/ricom/archive/2003/12/02/40778.aspx" title="Concatenating with StringBuilders vs. Strings"&gt;plenty&lt;/a&gt; &lt;a href="http://blogs.msdn.com/ricom/archive/2003/12/15/43628.aspx" title="More StringBuilder advice"&gt;has&lt;/a&gt; &lt;a href="http://weblogs.asp.net/bleroy/archive/2005/01/07/348831.aspx" title="Are StringBuilders always faster than concatenation?"&gt;been&lt;/a&gt; &lt;a href="http://weblogs.asp.net/bleroy/archive/2005/02/22/378223.aspx" title="More on string concatenation performance"&gt;written&lt;/a&gt; &lt;a href="http://www.codeproject.com/csharp/StringPerf.asp" title="Performance considerations for strings in C#"&gt;about&lt;/a&gt; &lt;a href="http://www.heikniemi.net/hc/archives/000124.html" title=".net String vs. StringBuilder - concatenation performance"&gt;.net String vs. StringBuilder - concatenation performance&lt;/a&gt; &lt;a href="http://www.yoda.arachsys.com/csharp/stringbuilder.html" title="Concatenating Strings Efficiently"&gt;Concatenating Strings Efficiently&lt;/a&gt;, lots of comparisons between String.Concat and StringBuilder. Today I decided to do some of my own research into the subject and &lt;strong&gt;contribute to the knowledge&lt;/strong&gt; already out there. More specifically, I&amp;rsquo;ll be taking a look at the &lt;strong&gt;memory usage&lt;/strong&gt; for various concatenation methods and compiler optimizations used to generate the IL.&lt;/p&gt;</description></item><item><title>Code Signing as Reverse Engineering Protection</title><link>/archive/2007-09-15-code-signing-as-reverse-engineering-protection/</link><pubDate>Sat, 15 Sep 2007 00:00:00 +0200</pubDate><guid>/archive/2007-09-15-code-signing-as-reverse-engineering-protection/</guid><description>&lt;p&gt;In my last post I spoke about &lt;a href="/archive/2007-09-06-reverse-engineering-with-reflector-and-reflexil/"&gt;reverse engineering .NET assemblies&lt;/a&gt; upon which &lt;a href="http://dnasand.wordpress.com/" title="G&amp;#39;s Weblog"&gt;Gregory&lt;/a&gt; asked how to &lt;strong&gt;protect his code&lt;/strong&gt; against it.&lt;/p&gt;</description></item><item><title>Reverse Engineering with Reflector and Reflexil</title><link>/archive/2007-09-06-reverse-engineering-with-reflector-and-reflexil/</link><pubDate>Thu, 06 Sep 2007 00:00:00 +0200</pubDate><guid>/archive/2007-09-06-reverse-engineering-with-reflector-and-reflexil/</guid><description>&lt;p&gt;I&amp;rsquo;ve always been a big fan of &lt;a href="http://www.aisto.com/roeder/dotnet/" title="Reflector"&gt;Reflector&lt;/a&gt;, allowing me to have a &lt;strong&gt;look in assemblies&lt;/strong&gt; to learn new things, debug in case of problems and provide useful information when creating bug reports. Combined with the &lt;a href="http://sebastien.lebreton.free.fr/reflexil/" title="Reflexil"&gt;Reflexil Add-in&lt;/a&gt; it&amp;rsquo;s now easy to also &lt;strong&gt;modify assemblies&lt;/strong&gt; yourself.&lt;/p&gt;</description></item><item><title>Using PowerShell, Writing and Debugging Cmdlets</title><link>/archive/2007-08-19-using-powershell-writing-and-debugging-cmdlets/</link><pubDate>Sun, 19 Aug 2007 00:00:00 +0200</pubDate><guid>/archive/2007-08-19-using-powershell-writing-and-debugging-cmdlets/</guid><description>&lt;p&gt;&lt;strong&gt;The prompt is dead, long live the prompt!&lt;/strong&gt; That&amp;rsquo;s the feeling &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" title="Windows PowerShell"&gt;PowerShell&lt;/a&gt; should give you, the new command line shell from Microsoft. Today, I&amp;rsquo;ll try to determine exactly what the &lt;strong&gt;Power&lt;/strong&gt; part in PowerShell stands for.&lt;/p&gt;</description></item><item><title>Writing an Outlook Add-in</title><link>/archive/2007-08-17-writing-an-outlook-add-in/</link><pubDate>Fri, 17 Aug 2007 00:00:00 +0200</pubDate><guid>/archive/2007-08-17-writing-an-outlook-add-in/</guid><description>&lt;p&gt;Yesterday I talked about &lt;a href="/archive/2007-08-16-personalizing-outlook-today/"&gt;personalizing Outlook Today&lt;/a&gt; to make it look more sexy. One of the things I had on my Outlook Today, was my picture with a &lt;strong&gt;direct link&lt;/strong&gt; to my contact details. This link looked like this:&lt;/p&gt;</description></item><item><title>Sync FLAC Library with iPod</title><link>/archive/2007-08-11-sync-flac-library-with-ipod/</link><pubDate>Sat, 11 Aug 2007 00:00:00 +0200</pubDate><guid>/archive/2007-08-11-sync-flac-library-with-ipod/</guid><description>&lt;p&gt;Yesterday I explained how you could &lt;a href="/archive/2007-08-10-manage-ipod-through-windows-explorer/"&gt;manage your iPod through Windows Explorer&lt;/a&gt;. Having this ability opens up more powerful ways of managing your iPod. One of these ways for example is the ability to automatically sync your master archive stored on your computer, with your iPod. In my case it&amp;rsquo;s stored in &lt;abbr title="Free Lossless Audio Codec"&gt;FLAC&lt;/abbr&gt; format to &lt;a href="/archive/2007-08-09-listen-to-high-quality-music/"&gt;retain all it&amp;rsquo;s quality&lt;/a&gt;, since FLAC is a lossless format.&lt;/p&gt;</description></item><item><title>Visual Studio 2008 and PHP Coloring</title><link>/archive/2007-08-08-visual-studio-2008-and-php-coloring/</link><pubDate>Wed, 08 Aug 2007 00:00:00 +0200</pubDate><guid>/archive/2007-08-08-visual-studio-2008-and-php-coloring/</guid><description>&lt;p&gt;Visual Studio is a great editor! But when editing other file formats I miss the coloring.&lt;/p&gt;</description></item><item><title>Using DebugView and C#</title><link>/archive/2007-08-06-using-debugview-and-c/</link><pubDate>Mon, 06 Aug 2007 00:00:00 +0200</pubDate><guid>/archive/2007-08-06-using-debugview-and-c/</guid><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx" title="Microsoft - DebugView"&gt;DebugView &lt;/a&gt;is a very nice tool from Microsoft (by SysInternals), which allows you to see debug output from the kernel or Win32, local and remote!&lt;/p&gt;</description></item><item><title>Remoting Server-Side</title><link>/archive/2005-04-03-remoting-server-side/</link><pubDate>Sun, 03 Apr 2005 00:00:00 +0200</pubDate><guid>/archive/2005-04-03-remoting-server-side/</guid><description>&lt;p&gt;When the Windows Service was successfully running, a way had to be found to control it. There was a &lt;i&gt;ServiceController&lt;/i&gt; class which allowed controlling a service and sending messages to it trough the &lt;i&gt;ExecuteCommand&lt;/i&gt; method. This method was limited to sending integers without getting anything back. A better solution was to use &lt;i&gt;Remoting&lt;/i&gt; to control the service.&lt;/p&gt;</description></item><item><title>Boxing/Unboxing In .NET</title><link>/archive/2005-02-14-boxing-unboxing-in-net/</link><pubDate>Mon, 14 Feb 2005 00:00:00 +0100</pubDate><guid>/archive/2005-02-14-boxing-unboxing-in-net/</guid><description>&lt;p&gt;In the .NET Framework there is a feature called &lt;strong&gt;boxing&lt;/strong&gt;, which goes hand in hand with &lt;strong&gt;unboxing&lt;/strong&gt;. Boxing is an implicit conversion of a value-type to the object type. While this is a very nice feature when programming normal applications, this overhead becomes a big performance hit when working with algorithms that need to do lots of operations, such as path finding.&lt;/p&gt;</description></item><item><title>BlogCast - Alternate Data Streams</title><link>/archive/2005-01-04-blogcast-alternate-data-streams/</link><pubDate>Tue, 04 Jan 2005 00:00:00 +0100</pubDate><guid>/archive/2005-01-04-blogcast-alternate-data-streams/</guid><description>&lt;p&gt;Some time ago I saw something about Alternate Data Streams, but I can&amp;rsquo;t find the source anymore to give credit :(&lt;/p&gt;</description></item><item><title>Stream Music over WiFi - JustePort - .mp3 support needed</title><link>/archive/2004-09-01-stream-music-over-wifi-justeport-mp3-support-needed/</link><pubDate>Wed, 01 Sep 2004 00:00:00 +0200</pubDate><guid>/archive/2004-09-01-stream-music-over-wifi-justeport-mp3-support-needed/</guid><description>&lt;p&gt;Right, about 2 weeks ago Jon Lech Johansen released &lt;a href="http://nanocrew.net/blog/apple/revairtunes.html"&gt;&lt;b&gt;Justeport&lt;/b&gt;&lt;/a&gt;, a tool to stream your Apple music files to your &lt;a href="http://www.apple.com/airportexpress/"&gt;&lt;b&gt;Airport Express&lt;/b&gt;&lt;/a&gt;. &amp;lt;&lt;/p&gt;</description></item><item><title>ConvertToProperties Macro</title><link>/archive/2004-07-02-converttoproperties-macro/</link><pubDate>Fri, 02 Jul 2004 00:00:00 +0200</pubDate><guid>/archive/2004-07-02-converttoproperties-macro/</guid><description>&lt;p&gt;For everyone who received &lt;a href="http://www.microsoft.com/netherlands/msdn/netmagazine/default.asp#5"&gt;&lt;b&gt;.NET Magazine #5&lt;/b&gt;&lt;/a&gt;, there&amp;rsquo;s an article in there at page 53 about cleaning up your code.&lt;/p&gt;</description></item><item><title>Passing bitwise OR enum values</title><link>/archive/2004-06-28-passing-bitwise-or-enum-values/</link><pubDate>Mon, 28 Jun 2004 00:00:00 +0200</pubDate><guid>/archive/2004-06-28-passing-bitwise-or-enum-values/</guid><description>&lt;p&gt;Everyone who has ever used a Regex knows this form of parameter:&lt;/p&gt;</description></item><item><title>Error Reporting To The EventLog - NUnit</title><link>/archive/2004-04-11-error-reporting-to-the-eventlog-nunit/</link><pubDate>Sun, 11 Apr 2004 00:00:00 +0200</pubDate><guid>/archive/2004-04-11-error-reporting-to-the-eventlog-nunit/</guid><description>&lt;p&gt;For this article, we&amp;rsquo;re going to write a class to write to the &lt;span style="10pt; font-family: 'Courier New';"&gt;EventLog&lt;/span&gt;. To allow us for easy error logging.&lt;/p&gt;</description></item><item><title>Using NUnit - Error Reporting To The EventLog</title><link>/archive/2004-04-11-using-nunit-error-reporting-to-the-eventlog/</link><pubDate>Sun, 11 Apr 2004 00:00:00 +0200</pubDate><guid>/archive/2004-04-11-using-nunit-error-reporting-to-the-eventlog/</guid><description>&lt;p&gt;I started working with &lt;a href="http://www.nunit.org/"&gt;&lt;b&gt;NUnit&lt;/b&gt;&lt;/a&gt; a couple of days ago and here is my first attempt at creating something in this new style:&lt;/p&gt;</description></item><item><title>FrontPage Server Extensions - IIS Metabase</title><link>/archive/2004-04-09-frontpage-server-extensions-iis-metabase/</link><pubDate>Fri, 09 Apr 2004 00:00:00 +0200</pubDate><guid>/archive/2004-04-09-frontpage-server-extensions-iis-metabase/</guid><description>&lt;p&gt;Currently I&amp;rsquo;m playing around with IIS and C#, and something I discovered is the following:&lt;/p&gt;</description></item><item><title>Parameterized Queries - MySQL</title><link>/archive/2004-04-05-parameterized-queries-mysql/</link><pubDate>Mon, 05 Apr 2004 00:00:00 +0200</pubDate><guid>/archive/2004-04-05-parameterized-queries-mysql/</guid><description>&lt;p&gt;Today I was looking over a project I&amp;rsquo;m working on currently, more specifically, at the SQL queries in it.&lt;/p&gt;</description></item><item><title>Differences between PHP and ASP.NET</title><link>/archive/2004-03-21-differences-between-php-and-asp-net/</link><pubDate>Sun, 21 Mar 2004 00:00:00 +0100</pubDate><guid>/archive/2004-03-21-differences-between-php-and-asp-net/</guid><description>&lt;p&gt;In response to a thread on the &lt;a href="http://www.asp.net/Forums" title="ASP.NET Forums"&gt;&lt;b&gt;ASP.NET Forums&lt;/b&gt;&lt;/a&gt; I decided to publish the answers in an overview on my blog.&lt;/p&gt;</description></item><item><title>Birthday - 20 years - Small Console ChatServer</title><link>/archive/2004-03-15-birthday-20-years-small-console-chatserver/</link><pubDate>Mon, 15 Mar 2004 00:00:00 +0100</pubDate><guid>/archive/2004-03-15-birthday-20-years-small-console-chatserver/</guid><description>&lt;p&gt;Today&amp;rsquo;s my birthday, I&amp;rsquo;m turning 20 :)&lt;/p&gt;&#10;&lt;p&gt;And because of that I&amp;rsquo;m giving you guys a present. In the form of some articles.&lt;/p&gt;</description></item><item><title>Custom WordWrapper</title><link>/archive/2004-03-15-custom-wordwrapper/</link><pubDate>Mon, 15 Mar 2004 00:00:00 +0100</pubDate><guid>/archive/2004-03-15-custom-wordwrapper/</guid><description>&lt;p&gt;This article is about a question from &lt;a href="http://www.asp.net/Forums/User/UserProfile.aspx?tabindex=1&amp;amp;UserName=chopps"&gt;&lt;b&gt;chopps&lt;/b&gt;&lt;/a&gt; on the &lt;a href="http://www.asp.net/Forums/"&gt;&lt;b&gt;ASP.NET Forums&lt;/b&gt;&lt;/a&gt;. He wanted to wordwrap a text to a certain width.&lt;/p&gt;</description></item><item><title>Outlook and C# - Gather Addresses</title><link>/archive/2004-03-15-outlook-and-c-gather-addresses/</link><pubDate>Mon, 15 Mar 2004 00:00:00 +0100</pubDate><guid>/archive/2004-03-15-outlook-and-c-gather-addresses/</guid><description>&lt;p&gt;For this article I decided to work with Outlook from C#.&lt;/p&gt;</description></item><item><title>Small Console ChatServer</title><link>/archive/2004-03-15-small-console-chatserver/</link><pubDate>Mon, 15 Mar 2004 00:00:00 +0100</pubDate><guid>/archive/2004-03-15-small-console-chatserver/</guid><description>&lt;p&gt;In this article we&amp;rsquo;ll write a small ChatServer.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ll start by explaining the logic we will follow:&lt;/p&gt;</description></item><item><title>Create Hashes - MD5, SHA1, SHA256, SHA384, SHA512</title><link>/archive/2004-02-28-create-hashes-md5-sha1-sha256-sha384-sha512/</link><pubDate>Sat, 28 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-28-create-hashes-md5-sha1-sha256-sha384-sha512/</guid><description>&lt;p&gt;Today I&amp;rsquo;ll talk about hash functions.&lt;/p&gt;&#10;&lt;p&gt;A hash algorithm takes a piece of text and gives a hash as result. This hash is unique for the given text. If you use the hash function on the same text again, you&amp;rsquo;ll get the same hash. But there is no way to get the given text from the hash. This is great for storing passwords.&lt;/p&gt;</description></item><item><title>Associating your program with every file - ShellExtension</title><link>/archive/2004-02-27-associating-your-program-with-every-file-shellextension/</link><pubDate>Fri, 27 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-27-associating-your-program-with-every-file-shellextension/</guid><description>&lt;p&gt;In my last article (&lt;a href="/archive/2004-02-27-c-script/"&gt;&lt;b&gt;C# Script&lt;/b&gt;&lt;/a&gt;) I spoke about adding it to the shell right click menu. Now it&amp;rsquo;s time to implement that.&lt;/p&gt;</description></item><item><title>C# Script</title><link>/archive/2004-02-27-c-script/</link><pubDate>Fri, 27 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-27-c-script/</guid><description>&lt;p&gt;There is VBScript, JScript and PHP. But there isn&amp;rsquo;t anything like C#-Script. So, I decided to play around a bit, only as a matter of checking out the possibilities.&lt;/p&gt;</description></item><item><title>Including Resources in .exe</title><link>/archive/2004-02-27-including-resources-in-exe/</link><pubDate>Fri, 27 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-27-including-resources-in-exe/</guid><description>&lt;p&gt;As a I reply on my &lt;a href="/archive/2004-02-25-non-rectangular-form/"&gt;&lt;b&gt;Non-Rectangular Form&lt;/b&gt;&lt;/a&gt; article, someone asked if you couldn&amp;rsquo;t include the bitmap in the file.&lt;/p&gt;</description></item><item><title>Your program as ShellExtension (Registry) - Including Resources</title><link>/archive/2004-02-27-your-program-as-shellextension-registry-including-resources/</link><pubDate>Fri, 27 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-27-your-program-as-shellextension-registry-including-resources/</guid><description>&lt;p&gt;As a follow up to my C# Script program, I&amp;rsquo;ve added an article on how to &lt;a href="/archive/2004-02-27-associating-your-program-with-every-file-shellextension/"&gt;&lt;b&gt;associate your program with every file&lt;/b&gt;&lt;/a&gt; by adding a registry key.&lt;/p&gt;</description></item><item><title>Non-Rectangular Form</title><link>/archive/2004-02-25-non-rectangular-form/</link><pubDate>Wed, 25 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-25-non-rectangular-form/</guid><description>&lt;p&gt;I received some good feedback from my previous article (&lt;a href="/archive/2004-02-24-a-console-irc-bot/"&gt;&lt;b&gt;A Console IRC Bot&lt;/b&gt;&lt;/a&gt;) and here is the next one.&lt;/p&gt;</description></item><item><title>Non-Rectangular Forms - C#</title><link>/archive/2004-02-25-non-rectangular-forms-c/</link><pubDate>Wed, 25 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-25-non-rectangular-forms-c/</guid><description>&lt;p&gt;I added another article in the &amp;lsquo;&lt;i&gt;Basic C# Examples&lt;/i&gt;&amp;rsquo;-series. ;)&lt;/p&gt;</description></item><item><title>A Console IRC Bot.</title><link>/archive/2004-02-24-a-console-irc-bot/</link><pubDate>Tue, 24 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-24-a-console-irc-bot/</guid><description>&lt;p&gt;I&amp;rsquo;m planning to write some articles based on questions I get from fellow students.&lt;/p&gt;</description></item><item><title>Basic C# Examples</title><link>/archive/2004-02-24-basic-c-examples/</link><pubDate>Tue, 24 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-24-basic-c-examples/</guid><description>&lt;p&gt;I was thinking last night, all posts here are very great, and made by all those smart people. But why is it that my fellow students hardly read them? Or why don&amp;rsquo;t you hear them a lot?&lt;/p&gt;</description></item><item><title>Setting NTFS Permissions with C#</title><link>/archive/2004-02-08-setting-ntfs-permissions-with-c/</link><pubDate>Sun, 08 Feb 2004 00:00:00 +0100</pubDate><guid>/archive/2004-02-08-setting-ntfs-permissions-with-c/</guid><description>&lt;p&gt;Today I needed to set NTFS permissions in C# on some newly created directories.&lt;/p&gt;</description></item></channel></rss>