<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jeff Adkins' WebLog : CSharpBits</title><link>http://blogs.msdn.com/jeff_adkins/archive/tags/CSharpBits/default.aspx</link><description>Tags: CSharpBits</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>CSharpBits:The is and as Operators</title><link>http://blogs.msdn.com/jeff_adkins/archive/2004/03/16/90494.aspx</link><pubDate>Tue, 16 Mar 2004 18:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:90494</guid><dc:creator>Jeff Adkins</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jeff_adkins/comments/90494.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeff_adkins/commentrss.aspx?PostID=90494</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;SPAN class=SpellE&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;CSharp&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt; Bits is a tutorial-based digest that explains the C# programming language. It evolves, covering prerequisite topics and is currently broad in coverage rather than getting deep into a specific topic. That will come after a basis has been established.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I&amp;nbsp;issue the topics daily&amp;nbsp;(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;SPAN class=GramE&gt;&lt;STRONG&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/STRONG&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;p&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;), and mainly cover one topic in each issue, so readers can fit it in their daily routine.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I email these topics internally at Microsoft and have been asked to blog the digests externally to reach out to the user community.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;All code examples are meant to demonstrate the topic only. It is neither shippable nor secure code by any stretch of the imagination.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An archive of the topics I submitted internally within Microsoft before I started &lt;SPAN class=SpellE&gt;blogging&lt;/SPAN&gt; these out is not currently available externally.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;==================================================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;The is Operator &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can handle incompatible types by catching &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;InvalidCastException&lt;/SPAN&gt;&lt;/B&gt;, but there are other ways of handling this problem, such as the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;is&lt;/SPAN&gt;&lt;/B&gt; operator. The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;is&lt;/SPAN&gt;&lt;/B&gt; operator allows you to determine whether an object reference can be converted into a reference to a given class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can use the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;is&lt;/SPAN&gt;&lt;/B&gt; operator to test the type of the object without performing a conversion. The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;is&lt;/SPAN&gt;&lt;/B&gt; operator returns &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;true&lt;/SPAN&gt;&lt;/B&gt; if the value on the left is not &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;null&lt;/SPAN&gt;&lt;/B&gt; and a cast to the class on the right, if performed, would complete without throwing an exception. Otherwise, &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;is&lt;/SPAN&gt;&lt;/B&gt; returns &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;false&lt;/SPAN&gt;&lt;/B&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;if (a is Bird)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;b = (Bird) a; // Safe, because "a is Bird" returns true&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;else&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Console.WriteLine("Not a Bird");&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can think of the relationship between inherited classes as an "is a kind of" relationship, as in "A bird is a kind of animal." References in the variable &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;a&lt;/SPAN&gt;&lt;/I&gt; must be references to &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; objects, and &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;b&lt;/SPAN&gt;&lt;/I&gt; is a kind of animal. Of course, &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;b&lt;/SPAN&gt;&lt;/I&gt; is a bird as well, but a bird is just a special case of an animal. The converse is not true. An animal is not a type of bird. Some animals are birds, but it is not true that all animals are birds.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;So the following expression can be read as "If &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;a&lt;/SPAN&gt;&lt;/I&gt; is a kind of bird," or "If &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;a&lt;/SPAN&gt;&lt;/I&gt; is a bird or a type derived from bird."&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;if (a is Bird)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;The as Operator &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can use the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;as&lt;/SPAN&gt;&lt;/B&gt; operator to perform conversions between types without raising an exception.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The following statement performs a conversion of the reference in &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;a&lt;/SPAN&gt;&lt;/I&gt; to a value that references a class of type &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt;, and the runtime automatically checks to ensure that the conversion is acceptable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;b = a as Bird;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 25.5pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Error Handling &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;as&lt;/SPAN&gt;&lt;/B&gt; operator differs from the cast operator in the way it handles errors. If, in the preceding example, the reference in variable &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;a&lt;/SPAN&gt;&lt;/I&gt; cannot be converted in a reference to an object of class &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt;, the value &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;null&lt;/SPAN&gt;&lt;/B&gt; is stored in &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;b&lt;/SPAN&gt;&lt;/I&gt;, and the program continues. The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;as&lt;/SPAN&gt;&lt;/B&gt; operator never raises an exception.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can rewrite the previous code as follows to display an error message if the conversion cannot be performed:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Bird b = a as Bird;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;if (b == null)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Console.WriteLine("Not a bird");&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-TOP: 7.5pt; BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Although &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;as&lt;/SPAN&gt;&lt;/B&gt; never raises an exception, any attempt to access through the converted value will raise a &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;NullReferenceException&lt;/SPAN&gt;&lt;/B&gt; if it is &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;null&lt;/SPAN&gt;&lt;/B&gt;. Therefore, you should always check the return value from &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;as&lt;/SPAN&gt;&lt;/B&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=90494" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeff_adkins/archive/tags/CSharpBits/default.aspx">CSharpBits</category></item><item><title>CSharp Bits:Base/Derived Conversions</title><link>http://blogs.msdn.com/jeff_adkins/archive/2004/03/15/89825.aspx</link><pubDate>Mon, 15 Mar 2004 19:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:89825</guid><dc:creator>Jeff Adkins</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jeff_adkins/comments/89825.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeff_adkins/commentrss.aspx?PostID=89825</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;CSharp Bits is a tutorial-based digest that explains the C# programming language. It evolves, covering prerequisite topics and is currently broad in coverage rather than getting deep into a specific topic. That will come after a basis has been established.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;I&amp;nbsp;issue the topics daily&amp;nbsp;(&lt;FONT size=2&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&lt;/FONT&gt;p), and mainly cover one topic in each issue, so readers can fit it in their daily routine.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I email these topics internally at Microsoft and have been asked to blog the digests externally to reach out to the user community.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;All code examples are meant to demonstrate the topic only. It is neither shippable nor secure code by any stretch of the imagination.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An archive of the topics I submitted internally within Microsoft before I started blogging these out is not currently available externally.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: normal; FONT-FAMILY: Arial; mso-bidi-font-style: normal; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;==&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial; mso-bidi-font-style: normal; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;B&gt;&lt;FONT color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial FONT-STYLE: normal"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Arial; mso-bidi-font-style: normal; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;B&gt;&lt;FONT color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial FONT-STYLE: normal"&gt;Base/Derived Conversions &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can convert a reference to an object of a derived class to an object of its base class, and vice versa, under certain conditions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 25.5pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Conversion to Base Class Reference &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;References to objects of one class type can be converted into references to another type if one class inherits from the other, either directly or indirectly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;A reference to an object can always be converted to a reference to a base class object. This conversion can be performed implicitly (by assignment or as part of an expression) or explicitly (by using the cast operator).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The following examples will use two classes: &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt;. &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; is the base class of &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt;, or, to put it another way, &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt; inherits from &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The following example declares a variable of type &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; and a variable of type &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Animal a;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Bird b = new Bird(...);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Now consider the following assignment, in which the reference in &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;b&lt;/SPAN&gt;&lt;/I&gt; is copied to &lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;a&lt;/SPAN&gt;&lt;/I&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;a = b;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt; class inherits from the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; class. Therefore, a method that is found in &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; is also found in &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt;. (The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt; class might have overridden some of the methods of &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; to create its own version of them, but an implementation of the method will exist nonetheless.) Therefore, it is possible for references to &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt; objects to be assigned to variables containing references to objects of type &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;In this case, C# performs a type conversion from &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt; to &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt;. You can explicitly convert &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt; to &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Animal&lt;/SPAN&gt;&lt;/B&gt; by using a cast operator, as shown:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;a = (Animal) b;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The preceding code will produce exactly the same result.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 25.5pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Conversion to Derived Class Reference &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can convert a reference to a derived type, but you must explicitly specify the conversion by using a cast. An explicit conversion is subject to run-time checking to ensure that the types are compatible, as shown in the following example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Bird b = (Bird) a; // Okay&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;This code will compile successfully. At run time, the cast operator performs a check to determine whether the object referred to is really of type &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Bird&lt;/SPAN&gt;&lt;/B&gt;. If it is not, the run-time &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;InvalidCastException&lt;/SPAN&gt;&lt;/B&gt; is raised.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;If you attempt to assign to a derived type without a conversion operator, as in the following code, the compiler will display an error message stating, "Cannot implicitly convert type 'Animal' to 'Bird.'"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;b = a; // Will not compile&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can trap a type conversion error by using &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;try&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;catch&lt;/SPAN&gt;&lt;/B&gt;, just like any other exception, as shown in the following code:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;try {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;b = (Bird) a;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;}&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;catch (InvalidCastException) {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Console.WriteLine("Not a bird");&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;}&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=89825" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeff_adkins/archive/tags/CSharpBits/default.aspx">CSharpBits</category></item><item><title>CSharpBits:Converting Value Types</title><link>http://blogs.msdn.com/jeff_adkins/archive/2004/03/12/88796.aspx</link><pubDate>Sat, 13 Mar 2004 00:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:88796</guid><dc:creator>Jeff Adkins</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jeff_adkins/comments/88796.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeff_adkins/commentrss.aspx?PostID=88796</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;CSharp Bits is a tutorial-based digest explaining the C# programming language. It evolves, covering prerequisite topics and is currently broad in coverage rather than getting deep into a specific topic. That will come after a basis has been established.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is an internal Microsoft distribution that I submit emails to on a daily basis (approximately).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The issues mainly cover one topic each, so readers can fit it in their daily routine.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I have been asked to blog the digests externally to reach out to the user community.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;All code examples are meant to demonstrate the topic only. It is neither shippable nor secure code by any stretch of the imagination.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An archive of previous topics is not currently available externally.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&amp;nbsp;&lt;/P&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-bidi-font-style: normal"&gt;&lt;o:p&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Data Conversions &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/H1&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;In the upcoming issues, I will explain how to perform data conversions between reference types in C#. You can convert references from one type to another, but the reference types must be related.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;After reading the upcoming posts, you should&amp;nbsp;be able to:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Identify permitted and prohibited conversions between reference types.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Use conversion mechanisms (casts, &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;is&lt;/SPAN&gt;&lt;/B&gt;, and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;as&lt;/SPAN&gt;&lt;/B&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Identify special considerations for conversion to and from the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;object&lt;/SPAN&gt;&lt;/B&gt; type.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Use the reflection mechanism, which allows examination of run-time type information.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Perform automatic conversions (boxing and unboxing) between value types and reference types.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Verdana color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;I&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black"&gt;Converting Value Types &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/H2&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;C# supports implicit and explicit data conversions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4 style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 15pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Implicit Conversions &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/H4&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;For value types, I have&amp;nbsp;previously described two ways to convert data: implicit conversion and explicit conversion using the cast operator.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Implicit conversion occurs when a value of one type is assigned to another type. C# only allows implicit conversion for certain combinations of types, typically when the first value can be converted to the second without any data loss. The following example shows how data is converted implicitly from &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;int&lt;/SPAN&gt;&lt;/B&gt; to &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;long&lt;/SPAN&gt;&lt;/B&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;int&lt;/SPAN&gt; a = 4;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;long&lt;/SPAN&gt; b;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;b = a; // Implicit conversion of int to long&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4 style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 15pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Explicit Conversions &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/H4&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You can explicitly convert value types by using the cast operator, as shown:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;int&lt;/SPAN&gt; a;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;long&lt;/SPAN&gt; b = 7;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;a = (int) b;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4 style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 15pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=4&gt;&lt;SPAN style="FONT-SIZE: 14pt; COLOR: black; FONT-FAMILY: Arial"&gt;Exceptions &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;When you use the cast operator, you should be aware that problems might occur if the value cannot be held in the target variable. If a problem is detected during an explicit conversion (such as trying to fit the value 9,999,999,999 into an &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;int&lt;/SPAN&gt;&lt;/B&gt; variable), C# might raise an exception (in this case, the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;OverflowException&lt;/SPAN&gt;&lt;/B&gt;). If you want, you can catch this exception by using &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;try&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;catch&lt;/SPAN&gt;&lt;/B&gt;, as shown:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;try&lt;/SPAN&gt; {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;SPAN style="CURSOR: default"&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class=code1&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;a = checked((int) b);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;catch&lt;/SPAN&gt; (Exception) {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="CURSOR: default"&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class=code1&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Console.WriteLine("Problem in cast");&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;For operations that involve integers, use the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;checked&lt;/SPAN&gt;&lt;/B&gt; keyword or compile with the appropriate compiler settings, otherwise checking will not be performed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4 style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 15pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;System.Convert Class &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/H4&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Conversions between the different base types (such as int, long, and bool) are handled within the .NET Framework by the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.Convert&lt;/SPAN&gt;&lt;/B&gt; class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;You do not usually need to make calls to methods of &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.Convert&lt;/SPAN&gt;&lt;/B&gt;. The compiler handles these calls automatically.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=88796" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeff_adkins/archive/tags/CSharpBits/default.aspx">CSharpBits</category></item><item><title>CSharp Bits:System.IO Namespace</title><link>http://blogs.msdn.com/jeff_adkins/archive/2004/02/18/75677.aspx</link><pubDate>Wed, 18 Feb 2004 21:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75677</guid><dc:creator>Jeff Adkins</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/jeff_adkins/comments/75677.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeff_adkins/commentrss.aspx?PostID=75677</wfw:commentRss><description>&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Namespaces in the .NET Framework &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/H1&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The .NET Framework provides common language services to a variety of application development tools. The classes in the framework provide an interface to the common language runtime, the operating system, and the network.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;I&gt;&lt;FONT face=Arial color=black size=4&gt;&lt;SPAN style="FONT-SIZE: 14pt; COLOR: black"&gt;System.IO Namespace &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/H2&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.IO&lt;/SPAN&gt;&lt;/B&gt; namespace is important because it contains many classes that allow an application to perform input and output (I/O) operations in various ways through the file system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.IO&lt;/SPAN&gt;&lt;/B&gt; namespace also provides classes that allow an application to perform input and output operations on files and directories.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.IO&lt;/SPAN&gt;&lt;/B&gt; namespace is large and cannot be explained in detail here. However, the following list gives an indication of the facilities available:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l1 level1 lfo4"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;File&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Directory&lt;/SPAN&gt;&lt;/B&gt; classes allow an application to create, delete, and manipulate directories and files.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l1 level1 lfo4"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;StreamReader&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;StreamWriter&lt;/SPAN&gt;&lt;/B&gt; classes enable a program to access file contents as a stream of bytes or characters.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l1 level1 lfo4"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;FileStream&lt;/SPAN&gt;&lt;/B&gt; class can be used to provide random access to files.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white; MARGIN-LEFT: 15pt; TEXT-INDENT: 0in; mso-list: l1 level1 lfo4"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;BinaryReader&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;BinaryWriter&lt;/SPAN&gt;&lt;/B&gt; classes provide a way to read and write primitive data types as binary values.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4 style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 15pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;System.IO Example &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/H4&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The following example shows how a file can be opened and read as a stream. The example is not meant to illustrate all of the possible ways in which the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.IO&lt;/SPAN&gt;&lt;/B&gt; namespace can be used, but does show how you can perform a simple file copy operation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;using&lt;/SPAN&gt; System;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;using&lt;/SPAN&gt; System.IO; // Use IO namespace&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;// ...&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;StreamReader&lt;/SPAN&gt; reader = new StreamReader("infile.txt");&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;// Text in from file&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;StreamWriter&lt;/SPAN&gt; writer = new StreamWriter("outfile.txt");&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;// Text out to file&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;string&lt;/SPAN&gt; line;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;while&lt;/SPAN&gt; ((line = reader.ReadLine( )) != null)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;{&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="CURSOR: default"&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class=code1&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;writer.WriteLine(line);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;reader.Close&lt;/SPAN&gt;( );&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=code1&gt;&lt;SPAN style="CURSOR: default"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;writer.Close&lt;/SPAN&gt;( );&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;To open a file for reading, the code in the example creates a new &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;StreamReader&lt;/SPAN&gt;&lt;/B&gt; object and passes the name of the file that needs to be opened in the constructor. Similarly, to open a file for writing, the example creates a new &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;StreamWriter&lt;/SPAN&gt;&lt;/B&gt; object and passes the output file name in its constructor. In the example, the file names are hard-coded, but they could also be string variables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The example program copies a file by reading one line at a time from the input stream and writing that line to the output stream.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;ReadLine&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;WriteLine&lt;/SPAN&gt;&lt;/B&gt; might look familiar. The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Console&lt;/SPAN&gt;&lt;/B&gt; class has two static methods of that name. In the example, the methods are instance methods of the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;StreamReader&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;StreamWriter&lt;/SPAN&gt;&lt;/B&gt; classes, respectively.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;For more information about the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.IO&lt;/SPAN&gt;&lt;/B&gt; namespace, search for "System.IO namespace" in the .NET Framework SDK Help documents.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=75677" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeff_adkins/archive/tags/CSharpBits/default.aspx">CSharpBits</category></item><item><title>CSharpBits:Reflection</title><link>http://blogs.msdn.com/jeff_adkins/archive/2004/02/17/75026.aspx</link><pubDate>Tue, 17 Feb 2004 22:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75026</guid><dc:creator>Jeff Adkins</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jeff_adkins/comments/75026.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeff_adkins/commentrss.aspx?PostID=75026</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-outline-level: 2"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;Reflection &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;You can obtain information about the type of an object by using a mechanism called reflection.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;The reflection mechanism in C# is handled by the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.Reflection&lt;/SPAN&gt;&lt;/B&gt; namespace in the .NET Framework. This namespace contains classes and interfaces that provide a view of types, methods, and fields.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;System.Type&lt;/SPAN&gt;&lt;/B&gt; class provides methods for obtaining information about a type declaration, such as the constructors, methods, fields, properties, and events of a class. A &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Type&lt;/SPAN&gt;&lt;/B&gt; object that represents a type is unique; that is, two &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Type&lt;/SPAN&gt;&lt;/B&gt; object references refer to the same object only if they represent the same type. This allows comparison of &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Type&lt;/SPAN&gt;&lt;/B&gt; objects through reference comparisons (the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;==&lt;/SPAN&gt;&lt;/B&gt; and &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;!=&lt;/SPAN&gt;&lt;/B&gt; operators).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 7.5pt 0in 0pt 25.5pt; mso-outline-level: 4"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;The typeof Operator &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;At compile time, you can use the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;typeof&lt;/SPAN&gt;&lt;/B&gt; operator to return the type information from a given type name.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;The following example retrieves run-time type information for the type byte, and displays the type name to the console.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;using System;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;using System.Reflection;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;Type t = typeof(byte);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;Console.WriteLine("Type: {0}", t);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;The following example displays more detailed information about a class. Specifically, it lists the methods for that class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;using System;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;using System.Reflection;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;Type t = typeof(string); // Get type information&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;MethodInfo[ ] mi = t.GetMethods( );&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;foreach (MethodInfo m in mi) {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;Console.WriteLine("Method: {0}", m);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;}&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 7.5pt 0in 0pt 25.5pt; mso-outline-level: 4"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;GetType Method &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;typeof&lt;/SPAN&gt;&lt;/B&gt; operator only works on classes that exist at compile time. If you need type information at run time, you can use the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;GetType&lt;/SPAN&gt;&lt;/B&gt; method of the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Object&lt;/SPAN&gt;&lt;/B&gt; class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=75026" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeff_adkins/archive/tags/CSharpBits/default.aspx">CSharpBits</category></item><item><title>CSharp Bits:Common Methods for All Reference Types</title><link>http://blogs.msdn.com/jeff_adkins/archive/2004/02/16/73926.aspx</link><pubDate>Mon, 16 Feb 2004 20:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:73926</guid><dc:creator>Jeff Adkins</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jeff_adkins/comments/73926.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeff_adkins/commentrss.aspx?PostID=73926</wfw:commentRss><description>&lt;FONT face=Arial&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;I was asked to externally blog my posts to an internal Microsoft email&amp;nbsp;distribution group that I own called CSharp Bits.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This digest is comprised of C# topics that I try to issue daily, typically one topic per post.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is a tutorial approach so prerequisites are covered.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I have an archive of topics leading up to this one, but I 'm not sure if I will blog those.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I am currently covering how to use reference types in C#.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In this inaugural blog, I pick up at the topic of "Common Methods for All Reference Types"...&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;&lt;o:p&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Common Methods for All Reference Types &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;object&lt;/SPAN&gt;&lt;/B&gt; type provides a number of common methods. Because every type inherits from &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;object&lt;/SPAN&gt;&lt;/B&gt;, the derived types have these methods too. These common methods include the following:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 40.5pt; TEXT-INDENT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;ToString&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 40.5pt; TEXT-INDENT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Equals&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 40.5pt; TEXT-INDENT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;GetType&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 40.5pt; TEXT-INDENT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt; mso-list: l0 level1 lfo2"&gt;&lt;FONT face=Symbol color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;FONT face="Times New Roman" size=1&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Finalize&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 25.5pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;ToString Method &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;ToString&lt;/SPAN&gt;&lt;/B&gt; method returns a string that represents the current object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The default implementation, as found in the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Object&lt;/SPAN&gt;&lt;/B&gt; class, returns the type name of the class. The following example uses the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;coordinate&lt;/SPAN&gt;&lt;/B&gt; example class defined earlier:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeeeee"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;coordinate c = new coordinate( );&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Console.WriteLine(c.ToString( ));&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;This example will display "coordinate" on the console.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;However, you can override the &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;ToString&lt;/SPAN&gt;&lt;/B&gt; method in class &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;coordinate&lt;/SPAN&gt;&lt;/B&gt; to render objects of that type into something more meaningful, such as a string containing the values held in the object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 25.5pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Equals Method &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;The &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Equals&lt;/SPAN&gt;&lt;/B&gt; method determines whether the specified object is the same instance as the current object. The default implementation of &lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Equals&lt;/SPAN&gt;&lt;/B&gt; supports reference equality only, as you have already seen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Subclasses can override this method to support value equality instead.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 25.5pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;GetType Method &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;This method allows extraction of run-time type information from an object. I will discuss this in more detail in the Data Conversions section in a later topic.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 25.5pt; MARGIN-RIGHT: 0in; mso-margin-top-alt: 7.5pt"&gt;&lt;B&gt;&lt;FONT face=Arial color=black size=3&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial"&gt;Finalize Method &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-TOP: 7.5pt; BACKGROUND: white"&gt;&lt;FONT face=Arial color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;This method is called by the run-time system when an object becomes inaccessible.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/o:p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=73926" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeff_adkins/archive/tags/CSharpBits/default.aspx">CSharpBits</category></item></channel></rss>