<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>kevin Mocha - SoftwareEngineering | Design Pattern</title>
    <link>http://blog.ilovedoudou.com/</link>
    <description>Bookmarks collected from web.</description>
    <language>en-us</language>
    <copyright>Kevin Mocha</copyright>
    <lastBuildDate>Tue, 09 Sep 2008 14:51:18 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>lulustock@gmail.com</managingEditor>
    <webMaster>lulustock@gmail.com</webMaster>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=b2b10b70-87e2-4be3-a84b-9f173e7e89b8</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,b2b10b70-87e2-4be3-a84b-9f173e7e89b8.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,b2b10b70-87e2-4be3-a84b-9f173e7e89b8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b2b10b70-87e2-4be3-a84b-9f173e7e89b8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.cnblogs.com/nuaalfm/archive/2008/08/23/1274868.html" href="http://www.cnblogs.com/nuaalfm/archive/2008/08/23/1274868.html">http://www.cnblogs.com/nuaalfm/archive/2008/08/23/1274868.html</a>
        </p>
        <div class="csharpcode">
          <pre>
            <span class="lnum"> 1: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args)</pre>
          <pre>
            <span class="lnum"> 2: </span> {</pre>
          <pre>
            <span class="lnum"> 3: </span>
            <span class="kwrd">int</span>[] array = { 9,8,2,6,5,4,3,7,1};</pre>
          <pre>
            <span class="lnum"> 4: </span> BubleSort(array);</pre>
          <pre>
            <span class="lnum"> 5: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 6: </span> {</pre>
          <pre>
            <span class="lnum"> 7: </span> Console.WriteLine(array[i]);</pre>
          <pre>
            <span class="lnum"> 8: </span> }</pre>
          <pre>
            <span class="lnum"> 9: </span> }</pre>
          <pre>
            <span class="lnum"> 10: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> BubleSort(<span class="kwrd">int</span>[]
array)</pre>
          <pre>
            <span class="lnum"> 11: </span> {</pre>
          <pre>
            <span class="lnum"> 12: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 13: </span> {</pre>
          <pre>
            <span class="lnum"> 14: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> j
= 0; j &lt; array.Length-i-1; j++)</pre>
          <pre>
            <span class="lnum"> 15: </span> {</pre>
          <pre>
            <span class="lnum"> 16: </span>
            <span class="kwrd">if</span> (array[j] &gt; array[j
+ 1])</pre>
          <pre>
            <span class="lnum"> 17: </span> {</pre>
          <pre>
            <span class="lnum"> 18: </span>
            <span class="kwrd">int</span> temp = array[j];</pre>
          <pre>
            <span class="lnum"> 19: </span> array[j] = array[j + 1];</pre>
          <pre>
            <span class="lnum"> 20: </span> array[j + 1] = temp;</pre>
          <pre>
            <span class="lnum"> 21: </span> }</pre>
          <pre>
            <span class="lnum"> 22: </span> }</pre>
          <pre>
            <span class="lnum"> 23: </span> }</pre>
          <pre>
            <span class="lnum"> 24: </span> }</pre>
          <pre>
            <span class="lnum"> 25: </span> </pre>
          <pre>
            <span class="lnum"> 26: </span>
            <span class="rem">// Interface Implement 1</span>
          </pre>
          <pre>
            <span class="lnum"> 27: </span> </pre>
          <pre>
            <span class="lnum"> 28: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">interface</span> IArray</pre>
          <pre>
            <span class="lnum"> 29: </span> {</pre>
          <pre>
            <span class="lnum"> 30: </span>
            <span class="kwrd">bool</span> Compare(IArray
IA);</pre>
          <pre>
            <span class="lnum"> 31: </span> }</pre>
          <pre>
            <span class="lnum"> 32: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">class</span> Employee:IArray</pre>
          <pre>
            <span class="lnum"> 33: </span> {</pre>
          <pre>
            <span class="lnum"> 34: </span>
            <span class="kwrd">public</span> Employee(<span class="kwrd">int</span> age)</pre>
          <pre>
            <span class="lnum"> 35: </span> {</pre>
          <pre>
            <span class="lnum"> 36: </span>
            <span class="kwrd">this</span>.Age = age;</pre>
          <pre>
            <span class="lnum"> 37: </span> }</pre>
          <pre>
            <span class="lnum"> 38: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">int</span> Age
{ get; set; }</pre>
          <pre>
            <span class="lnum"> 39: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">bool</span> Compare(IArray
IA)</pre>
          <pre>
            <span class="lnum"> 40: </span> {</pre>
          <pre>
            <span class="lnum"> 41: </span>
            <span class="kwrd">return</span>
            <span class="kwrd">this</span>.Age&gt;((Employee)IA).Age;</pre>
          <pre>
            <span class="lnum"> 42: </span> }</pre>
          <pre>
            <span class="lnum"> 43: </span> }</pre>
          <pre>
            <span class="lnum"> 44: </span>
            <span class="kwrd">class</span> Program</pre>
          <pre>
            <span class="lnum"> 45: </span> {</pre>
          <pre>
            <span class="lnum"> 46: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args)</pre>
          <pre>
            <span class="lnum"> 47: </span> {</pre>
          <pre>
            <span class="lnum"> 48: </span> Employee[] array = { <span class="kwrd">new</span> Employee(23),<span class="kwrd">new</span> Employee(20),<span class="kwrd">new</span> Employee(19),<span class="kwrd">new</span> Employee(30)};</pre>
          <pre>
            <span class="lnum"> 49: </span> BubleSort(array);</pre>
          <pre>
            <span class="lnum"> 50: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 51: </span> {</pre>
          <pre>
            <span class="lnum"> 52: </span> Console.WriteLine(array[i].Age);</pre>
          <pre>
            <span class="lnum"> 53: </span> }</pre>
          <pre>
            <span class="lnum"> 54: </span> }</pre>
          <pre>
            <span class="lnum"> 55: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> BubleSort(IArray[]
array)</pre>
          <pre>
            <span class="lnum"> 56: </span> {</pre>
          <pre>
            <span class="lnum"> 57: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 58: </span> {</pre>
          <pre>
            <span class="lnum"> 59: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> j
= 0; j &lt; array.Length-i-1; j++)</pre>
          <pre>
            <span class="lnum"> 60: </span> {</pre>
          <pre>
            <span class="lnum"> 61: </span>
            <span class="kwrd">if</span> (array[j].Compare(array[j
+ 1]))</pre>
          <pre>
            <span class="lnum"> 62: </span> {</pre>
          <pre>
            <span class="lnum"> 63: </span> IArray temp = array[j];</pre>
          <pre>
            <span class="lnum"> 64: </span> array[j] = array[j + 1];</pre>
          <pre>
            <span class="lnum"> 65: </span> array[j + 1] = temp;</pre>
          <pre>
            <span class="lnum"> 66: </span> }</pre>
          <pre>
            <span class="lnum"> 67: </span> }</pre>
          <pre>
            <span class="lnum"> 68: </span> }</pre>
          <pre>
            <span class="lnum"> 69: </span> }</pre>
          <pre>
            <span class="lnum"> 70: </span> }</pre>
          <pre>
            <span class="lnum"> 71: </span> </pre>
          <pre>
            <span class="lnum"> 72: </span>
            <span class="rem">//Interface implement2</span>
          </pre>
          <pre>
            <span class="lnum"> 73: </span> </pre>
          <pre>
            <span class="lnum"> 74: </span>
            <span class="kwrd">class</span> Program</pre>
          <pre>
            <span class="lnum"> 75: </span> {</pre>
          <pre>
            <span class="lnum"> 76: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args)</pre>
          <pre>
            <span class="lnum"> 77: </span> {</pre>
          <pre>
            <span class="lnum"> 78: </span>
            <span class="rem">//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};</span>
          </pre>
          <pre>
            <span class="lnum"> 79: </span> IComparable[] array = { 9, 8, 2, 6, 5, 4, 3,
7, 1 };</pre>
          <pre>
            <span class="lnum"> 80: </span> BubleSort(array);</pre>
          <pre>
            <span class="lnum"> 81: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 82: </span> {</pre>
          <pre>
            <span class="lnum"> 83: </span> Console.WriteLine(array[i]);</pre>
          <pre>
            <span class="lnum"> 84: </span> }</pre>
          <pre>
            <span class="lnum"> 85: </span> }</pre>
          <pre>
            <span class="lnum"> 86: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> BubleSort(IComparable[]
array)</pre>
          <pre>
            <span class="lnum"> 87: </span> {</pre>
          <pre>
            <span class="lnum"> 88: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 89: </span> {</pre>
          <pre>
            <span class="lnum"> 90: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> j
= 0; j &lt; array.Length-i-1; j++)</pre>
          <pre>
            <span class="lnum"> 91: </span> {</pre>
          <pre>
            <span class="lnum"> 92: </span>
            <span class="kwrd">if</span> (array[j].CompareTo(array[j
+ 1])&gt;0)</pre>
          <pre>
            <span class="lnum"> 93: </span> {</pre>
          <pre>
            <span class="lnum"> 94: </span> IComparable temp = array[j];</pre>
          <pre>
            <span class="lnum"> 95: </span> array[j] = array[j + 1];</pre>
          <pre>
            <span class="lnum"> 96: </span> array[j + 1] = temp;</pre>
          <pre>
            <span class="lnum"> 97: </span> }</pre>
          <pre>
            <span class="lnum"> 98: </span> }</pre>
          <pre>
            <span class="lnum"> 99: </span> }</pre>
          <pre>
            <span class="lnum"> 100: </span> }</pre>
          <pre>
            <span class="lnum"> 101: </span> }</pre>
          <pre>
            <span class="lnum"> 102: </span> </pre>
          <pre>
            <span class="lnum"> 103: </span> </pre>
          <pre>
            <span class="lnum"> 104: </span>
            <span class="rem">//Interface Implement 3 ---
Inversion of control</span>
          </pre>
          <pre>
            <span class="lnum"> 105: </span>
            <span class="kwrd">class</span> IntCompare:IComparer&lt;<span class="kwrd">int</span>&gt;</pre>
          <pre>
            <span class="lnum"> 106: </span> {</pre>
          <pre>
            <span class="lnum"> 107: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">int</span> Compare(<span class="kwrd">int</span> x, <span class="kwrd">int</span> y)</pre>
          <pre>
            <span class="lnum"> 108: </span> {</pre>
          <pre>
            <span class="lnum"> 109: </span>
            <span class="kwrd">return</span> x.CompareTo(y);</pre>
          <pre>
            <span class="lnum"> 110: </span> }</pre>
          <pre>
            <span class="lnum"> 111: </span> </pre>
          <pre>
            <span class="lnum"> 112: </span> }</pre>
          <pre>
            <span class="lnum"> 113: </span>
            <span class="kwrd">class</span> Program</pre>
          <pre>
            <span class="lnum"> 114: </span> {</pre>
          <pre>
            <span class="lnum"> 115: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args)</pre>
          <pre>
            <span class="lnum"> 116: </span> {</pre>
          <pre>
            <span class="lnum"> 117: </span>
            <span class="rem">//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};</span>
          </pre>
          <pre>
            <span class="lnum"> 118: </span>
            <span class="kwrd">int</span>[] array = { 9,
8, 2, 6, 5, 4, 3, 7, 1 };</pre>
          <pre>
            <span class="lnum"> 119: </span> BubleSort&lt;<span class="kwrd">int</span>&gt;(array,<span class="kwrd">new</span> IntCompare());</pre>
          <pre>
            <span class="lnum"> 120: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 121: </span> {</pre>
          <pre>
            <span class="lnum"> 122: </span> Console.WriteLine(array[i]);</pre>
          <pre>
            <span class="lnum"> 123: </span> }</pre>
          <pre>
            <span class="lnum"> 124: </span> }</pre>
          <pre>
            <span class="lnum"> 125: </span> </pre>
          <pre>
            <span class="lnum"> 126: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> BubleSort&lt;T&gt;(T[]
array,IComparer&lt;T&gt; compare)</pre>
          <pre>
            <span class="lnum"> 127: </span> {</pre>
          <pre>
            <span class="lnum"> 128: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 129: </span> {</pre>
          <pre>
            <span class="lnum"> 130: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> j
= 0; j &lt; array.Length-i-1; j++)</pre>
          <pre>
            <span class="lnum"> 131: </span> {</pre>
          <pre>
            <span class="lnum"> 132: </span>
            <span class="kwrd">if</span> (compare.Compare(array[j],
array[j + 1]) &gt; 0)</pre>
          <pre>
            <span class="lnum"> 133: </span> {</pre>
          <pre>
            <span class="lnum"> 134: </span> T temp = array[j];</pre>
          <pre>
            <span class="lnum"> 135: </span> array[j] = array[j + 1];</pre>
          <pre>
            <span class="lnum"> 136: </span> array[j + 1] = temp;</pre>
          <pre>
            <span class="lnum"> 137: </span> }</pre>
          <pre>
            <span class="lnum"> 138: </span> }</pre>
          <pre>
            <span class="lnum"> 139: </span> }</pre>
          <pre>
            <span class="lnum"> 140: </span> }</pre>
          <pre>
            <span class="lnum"> 141: </span> }</pre>
          <pre>
            <span class="lnum"> 142: </span> </pre>
          <pre>
            <span class="lnum"> 143: </span>
            <span class="rem">//Delegate implementation</span>
          </pre>
          <pre>
            <span class="lnum"> 144: </span>
            <span class="kwrd">class</span> Program</pre>
          <pre>
            <span class="lnum"> 145: </span> {</pre>
          <pre>
            <span class="lnum"> 146: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args)</pre>
          <pre>
            <span class="lnum"> 147: </span> {</pre>
          <pre>
            <span class="lnum"> 148: </span>
            <span class="rem">//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};</span>
          </pre>
          <pre>
            <span class="lnum"> 149: </span>
            <span class="kwrd">int</span>[] array = { 9,
8, 2, 6, 5, 4, 3, 7, 1 };</pre>
          <pre>
            <span class="lnum"> 150: </span> BubleSort&lt;<span class="kwrd">int</span>&gt;(array,
CompareMethod);</pre>
          <pre>
            <span class="lnum"> 151: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 152: </span> {</pre>
          <pre>
            <span class="lnum"> 153: </span> Console.WriteLine(array[i]);</pre>
          <pre>
            <span class="lnum"> 154: </span> }</pre>
          <pre>
            <span class="lnum"> 155: </span> }</pre>
          <pre>
            <span class="lnum"> 156: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">bool</span> CompareMethod(<span class="kwrd">int</span> t1, <span class="kwrd">int</span> t2)</pre>
          <pre>
            <span class="lnum"> 157: </span> {</pre>
          <pre>
            <span class="lnum"> 158: </span>
            <span class="kwrd">return</span> t1 &gt; t2;</pre>
          <pre>
            <span class="lnum"> 159: </span> }</pre>
          <pre>
            <span class="lnum"> 160: </span>
            <span class="kwrd">delegate</span>
            <span class="kwrd">bool</span> Compare&lt;T&gt;(T
t1, T t2);</pre>
          <pre>
            <span class="lnum"> 161: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> BubleSort&lt;T&gt;(T[]
array, Compare&lt;T&gt; compare)</pre>
          <pre>
            <span class="lnum"> 162: </span> {</pre>
          <pre>
            <span class="lnum"> 163: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 164: </span> {</pre>
          <pre>
            <span class="lnum"> 165: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> j
= 0; j &lt; array.Length-i-1; j++)</pre>
          <pre>
            <span class="lnum"> 166: </span> {</pre>
          <pre>
            <span class="lnum"> 167: </span>
            <span class="kwrd">if</span> (compare(array[j],
array[j + 1]))</pre>
          <pre>
            <span class="lnum"> 168: </span> {</pre>
          <pre>
            <span class="lnum"> 169: </span> T temp = array[j];</pre>
          <pre>
            <span class="lnum"> 170: </span> array[j] = array[j + 1];</pre>
          <pre>
            <span class="lnum"> 171: </span> array[j + 1] = temp;</pre>
          <pre>
            <span class="lnum"> 172: </span> }</pre>
          <pre>
            <span class="lnum"> 173: </span> }</pre>
          <pre>
            <span class="lnum"> 174: </span> }</pre>
          <pre>
            <span class="lnum"> 175: </span> }</pre>
          <pre>
            <span class="lnum"> 176: </span> }</pre>
          <pre>
            <span class="lnum"> 177: </span> </pre>
          <pre>
            <span class="lnum"> 178: </span>
            <span class="rem">//Lamda function implementation</span>
          </pre>
          <pre>
            <span class="lnum"> 179: </span>
            <span class="kwrd">class</span> Program</pre>
          <pre>
            <span class="lnum"> 180: </span> {</pre>
          <pre>
            <span class="lnum"> 181: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args)</pre>
          <pre>
            <span class="lnum"> 182: </span> {</pre>
          <pre>
            <span class="lnum"> 183: </span>
            <span class="rem">//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};</span>
          </pre>
          <pre>
            <span class="lnum"> 184: </span>
            <span class="kwrd">int</span>[] array = { 9,
8, 2, 6, 5, 4, 3, 7, 1 };</pre>
          <pre>
            <span class="lnum"> 185: </span> BubleSort&lt;<span class="kwrd">int</span>&gt;(array,
(a,b)=&gt;a&gt;b);</pre>
          <pre>
            <span class="lnum"> 186: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 187: </span> {</pre>
          <pre>
            <span class="lnum"> 188: </span> Console.WriteLine(array[i]);</pre>
          <pre>
            <span class="lnum"> 189: </span> }</pre>
          <pre>
            <span class="lnum"> 190: </span> }</pre>
          <pre>
            <span class="lnum"> 191: </span>
            <span class="kwrd">static</span>
            <span class="kwrd">void</span> BubleSort&lt;T&gt;(T[]
array, Func&lt;T,T,<span class="kwrd">bool</span>&gt; compare)</pre>
          <pre>
            <span class="lnum"> 192: </span> {</pre>
          <pre>
            <span class="lnum"> 193: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> i
= 0; i &lt; array.Length; i++)</pre>
          <pre>
            <span class="lnum"> 194: </span> {</pre>
          <pre>
            <span class="lnum"> 195: </span>
            <span class="kwrd">for</span> (<span class="kwrd">int</span> j
= 0; j &lt; array.Length-i-1; j++)</pre>
          <pre>
            <span class="lnum"> 196: </span> {</pre>
          <pre>
            <span class="lnum"> 197: </span>
            <span class="kwrd">if</span> (compare(array[j],
array[j + 1]))</pre>
          <pre>
            <span class="lnum"> 198: </span> {</pre>
          <pre>
            <span class="lnum"> 199: </span> T temp = array[j];</pre>
          <pre>
            <span class="lnum"> 200: </span> array[j] = array[j + 1];</pre>
          <pre>
            <span class="lnum"> 201: </span> array[j + 1] = temp;</pre>
          <pre>
            <span class="lnum"> 202: </span> }</pre>
          <pre>
            <span class="lnum"> 203: </span> }</pre>
          <pre>
            <span class="lnum"> 204: </span> }</pre>
          <pre>
            <span class="lnum"> 205: </span> }</pre>
          <pre>
            <span class="lnum"> 206: </span> }</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=b2b10b70-87e2-4be3-a84b-9f173e7e89b8" />
      </body>
      <title>Design Time: Bubble sort for any type objects.</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,b2b10b70-87e2-4be3-a84b-9f173e7e89b8.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,b2b10b70-87e2-4be3-a84b-9f173e7e89b8.aspx</link>
      <pubDate>Tue, 09 Sep 2008 14:51:18 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.cnblogs.com/nuaalfm/archive/2008/08/23/1274868.html" href="http://www.cnblogs.com/nuaalfm/archive/2008/08/23/1274868.html"&gt;http://www.cnblogs.com/nuaalfm/archive/2008/08/23/1274868.html&lt;/a&gt;
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] array = { 9,8,2,6,5,4,3,7,1};&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; BubleSort(array);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; Console.WriteLine(array[i]);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BubleSort(&lt;span class="kwrd"&gt;int&lt;/span&gt;[]
array)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j
= 0; j &amp;lt; array.Length-i-1; j++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (array[j] &amp;gt; array[j
+ 1])&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; temp = array[j];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; array[j] = array[j + 1];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt; array[j + 1] = temp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt;&lt;span class="rem"&gt;// Interface Implement 1&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IArray&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 30: &lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Compare(IArray
IA);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 31: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 32: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Employee:IArray&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 33: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 34: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; Employee(&lt;span class="kwrd"&gt;int&lt;/span&gt; age)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 35: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 36: &lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Age = age;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 37: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 38: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Age
{ get; set; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 39: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Compare(IArray
IA)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 40: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 41: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Age&amp;gt;((Employee)IA).Age;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 42: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 43: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 44: &lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 45: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 46: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 47: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 48: &lt;/span&gt; Employee[] array = { &lt;span class="kwrd"&gt;new&lt;/span&gt; Employee(23),&lt;span class="kwrd"&gt;new&lt;/span&gt; Employee(20),&lt;span class="kwrd"&gt;new&lt;/span&gt; Employee(19),&lt;span class="kwrd"&gt;new&lt;/span&gt; Employee(30)};&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 49: &lt;/span&gt; BubleSort(array);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 50: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 51: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 52: &lt;/span&gt; Console.WriteLine(array[i].Age);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 53: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 54: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 55: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BubleSort(IArray[]
array)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 56: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 57: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 58: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 59: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j
= 0; j &amp;lt; array.Length-i-1; j++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 60: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 61: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (array[j].Compare(array[j
+ 1]))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 62: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 63: &lt;/span&gt; IArray temp = array[j];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 64: &lt;/span&gt; array[j] = array[j + 1];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 65: &lt;/span&gt; array[j + 1] = temp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 66: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 67: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 68: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 69: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 70: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 71: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 72: &lt;/span&gt;&lt;span class="rem"&gt;//Interface implement2&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 73: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 74: &lt;/span&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 75: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 76: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 77: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 78: &lt;/span&gt; &lt;span class="rem"&gt;//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 79: &lt;/span&gt; IComparable[] array = { 9, 8, 2, 6, 5, 4, 3,
7, 1 };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 80: &lt;/span&gt; BubleSort(array);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 81: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 82: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 83: &lt;/span&gt; Console.WriteLine(array[i]);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 84: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 85: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 86: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BubleSort(IComparable[]
array)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 87: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 88: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 89: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 90: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j
= 0; j &amp;lt; array.Length-i-1; j++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 91: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 92: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (array[j].CompareTo(array[j
+ 1])&amp;gt;0)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 93: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 94: &lt;/span&gt; IComparable temp = array[j];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 95: &lt;/span&gt; array[j] = array[j + 1];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 96: &lt;/span&gt; array[j + 1] = temp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 97: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 98: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 99: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 100: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 101: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 102: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 103: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 104: &lt;/span&gt;&lt;span class="rem"&gt;//Interface Implement 3 ---
Inversion of control&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 105: &lt;/span&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; IntCompare:IComparer&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 106: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 107: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Compare(&lt;span class="kwrd"&gt;int&lt;/span&gt; x, &lt;span class="kwrd"&gt;int&lt;/span&gt; y)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 108: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 109: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; x.CompareTo(y);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 110: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 111: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 112: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 113: &lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 114: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 115: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 116: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 117: &lt;/span&gt; &lt;span class="rem"&gt;//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 118: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] array = { 9,
8, 2, 6, 5, 4, 3, 7, 1 };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 119: &lt;/span&gt; BubleSort&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(array,&lt;span class="kwrd"&gt;new&lt;/span&gt; IntCompare());&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 120: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 121: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 122: &lt;/span&gt; Console.WriteLine(array[i]);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 123: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 124: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 125: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 126: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BubleSort&amp;lt;T&amp;gt;(T[]
array,IComparer&amp;lt;T&amp;gt; compare)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 127: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 128: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 129: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 130: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j
= 0; j &amp;lt; array.Length-i-1; j++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 131: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 132: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (compare.Compare(array[j],
array[j + 1]) &amp;gt; 0)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 133: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 134: &lt;/span&gt; T temp = array[j];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 135: &lt;/span&gt; array[j] = array[j + 1];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 136: &lt;/span&gt; array[j + 1] = temp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 137: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 138: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 139: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 140: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 141: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 142: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 143: &lt;/span&gt;&lt;span class="rem"&gt;//Delegate implementation&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 144: &lt;/span&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 145: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 146: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 147: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 148: &lt;/span&gt; &lt;span class="rem"&gt;//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 149: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] array = { 9,
8, 2, 6, 5, 4, 3, 7, 1 };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 150: &lt;/span&gt; BubleSort&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(array,
CompareMethod);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 151: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 152: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 153: &lt;/span&gt; Console.WriteLine(array[i]);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 154: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 155: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 156: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CompareMethod(&lt;span class="kwrd"&gt;int&lt;/span&gt; t1, &lt;span class="kwrd"&gt;int&lt;/span&gt; t2)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 157: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 158: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; t1 &amp;gt; t2;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 159: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 160: &lt;/span&gt; &lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Compare&amp;lt;T&amp;gt;(T
t1, T t2);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 161: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BubleSort&amp;lt;T&amp;gt;(T[]
array, Compare&amp;lt;T&amp;gt; compare)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 162: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 163: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 164: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 165: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j
= 0; j &amp;lt; array.Length-i-1; j++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 166: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 167: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (compare(array[j],
array[j + 1]))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 168: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 169: &lt;/span&gt; T temp = array[j];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 170: &lt;/span&gt; array[j] = array[j + 1];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 171: &lt;/span&gt; array[j + 1] = temp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 172: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 173: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 174: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 175: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 176: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 177: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 178: &lt;/span&gt;&lt;span class="rem"&gt;//Lamda function implementation&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 179: &lt;/span&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 180: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 181: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 182: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 183: &lt;/span&gt; &lt;span class="rem"&gt;//Employee[] array = { new
Employee(23),new Employee(20),new Employee(19),new Employee(30)};&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 184: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] array = { 9,
8, 2, 6, 5, 4, 3, 7, 1 };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 185: &lt;/span&gt; BubleSort&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(array,
(a,b)=&amp;gt;a&amp;gt;b);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 186: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 187: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 188: &lt;/span&gt; Console.WriteLine(array[i]);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 189: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 190: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 191: &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BubleSort&amp;lt;T&amp;gt;(T[]
array, Func&amp;lt;T,T,&lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt; compare)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 192: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 193: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; array.Length; i++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 194: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 195: &lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j
= 0; j &amp;lt; array.Length-i-1; j++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 196: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 197: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (compare(array[j],
array[j + 1]))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 198: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 199: &lt;/span&gt; T temp = array[j];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 200: &lt;/span&gt; array[j] = array[j + 1];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 201: &lt;/span&gt; array[j + 1] = temp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 202: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 203: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 204: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 205: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 206: &lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=b2b10b70-87e2-4be3-a84b-9f173e7e89b8" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,b2b10b70-87e2-4be3-a84b-9f173e7e89b8.aspx</comments>
      <category>SoftwareEngineering / Design Pattern</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=6d630577-87bc-4d4e-82ca-11e7e604671d</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,6d630577-87bc-4d4e-82ca-11e7e604671d.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,6d630577-87bc-4d4e-82ca-11e7e604671d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6d630577-87bc-4d4e-82ca-11e7e604671d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://martinfowler.com/articles/injection.html" href="http://martinfowler.com/articles/injection.html">http://martinfowler.com/articles/injection.html</a>
        </p>
        <p>
          <a title="http://www.cnblogs.com/zhouyinhui/archive/2008/07/07/1237613.html" href="http://www.cnblogs.com/zhouyinhui/archive/2008/07/07/1237613.html">http://www.cnblogs.com/zhouyinhui/archive/2008/07/07/1237613.html</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6d630577-87bc-4d4e-82ca-11e7e604671d" />
      </body>
      <title>IoC 容器和Dependency Injection 模式（中文版）</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,6d630577-87bc-4d4e-82ca-11e7e604671d.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,6d630577-87bc-4d4e-82ca-11e7e604671d.aspx</link>
      <pubDate>Tue, 15 Jul 2008 13:26:15 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://martinfowler.com/articles/injection.html" href="http://martinfowler.com/articles/injection.html"&gt;http://martinfowler.com/articles/injection.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.cnblogs.com/zhouyinhui/archive/2008/07/07/1237613.html" href="http://www.cnblogs.com/zhouyinhui/archive/2008/07/07/1237613.html"&gt;http://www.cnblogs.com/zhouyinhui/archive/2008/07/07/1237613.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6d630577-87bc-4d4e-82ca-11e7e604671d" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,6d630577-87bc-4d4e-82ca-11e7e604671d.aspx</comments>
      <category>SoftwareEngineering / Design Pattern</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=8472bcfb-cc13-4ce4-a367-2aa782147d99</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,8472bcfb-cc13-4ce4-a367-2aa782147d99.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,8472bcfb-cc13-4ce4-a367-2aa782147d99.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8472bcfb-cc13-4ce4-a367-2aa782147d99</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Tame Your Software Dependencies for More Flexible Apps
</p>
        <p>
          <a title="http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx" href="http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx">http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=8472bcfb-cc13-4ce4-a367-2aa782147d99" />
      </body>
      <title>Dependency Injection.</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,8472bcfb-cc13-4ce4-a367-2aa782147d99.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,8472bcfb-cc13-4ce4-a367-2aa782147d99.aspx</link>
      <pubDate>Thu, 03 Apr 2008 20:34:30 GMT</pubDate>
      <description>&lt;p&gt;
Tame Your Software Dependencies for More Flexible Apps
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx" href="http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx"&gt;http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=8472bcfb-cc13-4ce4-a367-2aa782147d99" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,8472bcfb-cc13-4ce4-a367-2aa782147d99.aspx</comments>
      <category>SoftwareEngineering;SoftwareEngineering / Design Pattern</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=d23336d6-f2f1-441d-8a50-3e3f3699fda3</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,d23336d6-f2f1-441d-8a50-3e3f3699fda3.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,d23336d6-f2f1-441d-8a50-3e3f3699fda3.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d23336d6-f2f1-441d-8a50-3e3f3699fda3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h1>Implementing the Singleton Pattern in C#
</h1>
        <br />
http://www.yoda.arachsys.com/csharp/singleton.html<br /><br />
Five implementations are given. The author also compared their pros and cons.<br /><br />
Bestone is: 
<br /><pre><span class="Modifier">public</span><span class="Modifier">sealed</span><span class="ReferenceType">class</span> Singleton<br />
{<br />
Singleton()<br />
{<br />
}<br /><br /><span class="Modifier">public</span><span class="Modifier">static</span> Singleton
Instance<br />
{<br />
get<br />
{<br /><span class="Statement">return</span> Nested.instance;<br />
}<br />
}<br /><br /><span class="ReferenceType">class</span> Nested<br />
{<br /><span class="InlineComment">// Explicit static constructor to tell C# compiler</span><br /><span class="InlineComment">// not to mark type as beforefieldinit</span><br /><span class="Modifier">static</span> Nested()<br />
{<br />
}<br /><br /><span class="Modifier">internal</span><span class="Modifier">static</span><span class="Modifier">readonly</span> Singleton
instance = <span class="Keyword">new</span> Singleton();<br />
}<br />
}</pre><br /><p></p><img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=d23336d6-f2f1-441d-8a50-3e3f3699fda3" /></body>
      <title>Singleton</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,d23336d6-f2f1-441d-8a50-3e3f3699fda3.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,d23336d6-f2f1-441d-8a50-3e3f3699fda3.aspx</link>
      <pubDate>Mon, 23 Jul 2007 15:49:45 GMT</pubDate>
      <description>&lt;h1&gt;Implementing the Singleton Pattern in C#
&lt;/h1&gt;
&lt;br&gt;
http://www.yoda.arachsys.com/csharp/singleton.html&lt;br&gt;
&lt;br&gt;
Five implementations are given. The author also compared their pros and cons.&lt;br&gt;
&lt;br&gt;
Bestone is: 
&lt;br&gt;
&lt;pre&gt;&lt;span class="Modifier"&gt;public&lt;/span&gt; &lt;span class="Modifier"&gt;sealed&lt;/span&gt; &lt;span class="ReferenceType"&gt;class&lt;/span&gt; Singleton&lt;br&gt;
{&lt;br&gt;
Singleton()&lt;br&gt;
{&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span class="Modifier"&gt;public&lt;/span&gt; &lt;span class="Modifier"&gt;static&lt;/span&gt; Singleton
Instance&lt;br&gt;
{&lt;br&gt;
get&lt;br&gt;
{&lt;br&gt;
&lt;span class="Statement"&gt;return&lt;/span&gt; Nested.instance;&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span class="ReferenceType"&gt;class&lt;/span&gt; Nested&lt;br&gt;
{&lt;br&gt;
&lt;span class="InlineComment"&gt;// Explicit static constructor to tell C# compiler&lt;/span&gt;
&lt;br&gt;
&lt;span class="InlineComment"&gt;// not to mark type as beforefieldinit&lt;/span&gt;
&lt;br&gt;
&lt;span class="Modifier"&gt;static&lt;/span&gt; Nested()&lt;br&gt;
{&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span class="Modifier"&gt;internal&lt;/span&gt; &lt;span class="Modifier"&gt;static&lt;/span&gt; &lt;span class="Modifier"&gt;readonly&lt;/span&gt; Singleton
instance = &lt;span class="Keyword"&gt;new&lt;/span&gt; Singleton();&lt;br&gt;
}&lt;br&gt;
}&lt;/pre&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=d23336d6-f2f1-441d-8a50-3e3f3699fda3" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,d23336d6-f2f1-441d-8a50-3e3f3699fda3.aspx</comments>
      <category>SoftwareEngineering / Design Pattern</category>
    </item>
  </channel>
</rss>