<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Exam 70-536 on David Cumps</title><link>/tags/exam-70-536/</link><description>Recent content in Exam 70-536 on David Cumps</description><generator>Hugo</generator><language>en-us</language><copyright>Copyright &amp;copy; 2026</copyright><lastBuildDate>Thu, 28 Aug 2008 00:00:00 +0200</lastBuildDate><atom:link href="/tags/exam-70-536/index.xml" rel="self" type="application/rss+xml"/><item><title>Exam 70-536 - Searching, Modifying, and Encoding Text</title><link>/archive/2008-08-28-exam-70-536-searching-modifying-and-encoding-text/</link><pubDate>Thu, 28 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/2008-08-28-exam-70-536-searching-modifying-and-encoding-text/</guid><description>&lt;p&gt;Chapter three finished, &lt;strong&gt;Searching, Modifying, and Encoding Text&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="/archive/exam-70-536/#implementing_globalization_drawing_and_text_manipulation_functionality_in_a_.net_framework_application"&gt;&lt;strong&gt;Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Exam 70-536 - Framework Fundamentals</title><link>/archive/2008-08-27-exam-70-536-framework-fundamentals/</link><pubDate>Wed, 27 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/2008-08-27-exam-70-536-framework-fundamentals/</guid><description>&lt;p&gt;The book I&amp;rsquo;m reading to prepare myself is &lt;a href="http://www.amazon.co.uk/gp/product/0735622779?ie=UTF8&amp;amp;tag=finyoudes-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=0735622779" title="Microsoft.NET Framework 2.0 Application Development Foundation"&gt;&lt;strong&gt;Microsoft.NET Framework 2.0 Application Development Foundation&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Exam 70-536 - Input/Output</title><link>/archive/2008-08-27-exam-70-536-input-output/</link><pubDate>Wed, 27 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/2008-08-27-exam-70-536-input-output/</guid><description>&lt;p&gt;Finished &lt;strong&gt;another chapter&lt;/strong&gt; in &lt;a href="http://www.amazon.co.uk/gp/product/0735622779?ie=UTF8&amp;amp;tag=finyoudes-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=0735622779" title="Microsoft.NET Framework 2.0 Application Development Foundation"&gt;my book&lt;/a&gt;, &lt;strong&gt;Input/Output&lt;/strong&gt;, which deals with the following:&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>Starting Exam 70-536 Study</title><link>/archive/2008-08-26-starting-exam-70-536-study/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0200</pubDate><guid>/archive/2008-08-26-starting-exam-70-536-study/</guid><description>&lt;p&gt;Taking a &lt;strong&gt;little break&lt;/strong&gt; right now, got a bit of a &lt;strong&gt;burn out&lt;/strong&gt;, lack of sleep might have something to do with it :)&lt;/p&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></channel></rss>