<?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>Cameron Beccario : VB Language</title><link>http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx</link><description>Tags: VB Language</description><dc:language>ja-JP</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>IsNot patent</title><link>http://blogs.msdn.com/cambecc/archive/2005/02/22/377999.aspx</link><pubDate>Wed, 23 Feb 2005 07:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:377999</guid><dc:creator>cambecc</dc:creator><slash:comments>18</slash:comments><comments>http://blogs.msdn.com/cambecc/comments/377999.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cambecc/commentrss.aspx?PostID=377999</wfw:commentRss><description>&lt;p class="MsoNormal"&gt;&lt;font face="Verdana" size="2"&gt;I can't stand seeing my friends &lt;a href="http://yro.slashdot.org/yro/04/11/19/1426256.shtml?tid=155"&gt;slammed&lt;/a&gt; on Slashdot yet &lt;a href="http://yro.slashdot.org/yro/05/02/22/1310232.shtml?tid=109&amp;amp;tid=155"&gt;again&lt;/a&gt;, so I'd like to say something about the "&lt;a href="http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PG01&amp;amp;p=1&amp;amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.html&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=%2220040230959%22.PGNR.&amp;amp;OS=DN/20040230959&amp;amp;RS=DN/20040230959"&gt;IsNot patent&lt;/a&gt;" fiasco. Paul, Amanda, and Corneliu are some of the nicest people I know, and I had the pleasure to work directly with them for several years. The "IsNot patent" is the result of a broken system and a litigious software industry, not the selling-out of unprincipled applicants.&lt;/font&gt; &lt;/p&gt; &lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=377999" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx">VB Language</category></item><item><title>TechEd part 2: Comega and VB</title><link>http://blogs.msdn.com/cambecc/archive/2004/09/10/227798.aspx</link><pubDate>Sat, 11 Sep 2004 02:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:227798</guid><dc:creator>cambecc</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/cambecc/comments/227798.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cambecc/commentrss.aspx?PostID=227798</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;Finished another day here at TechEd.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Saw a presentation on &lt;/font&gt;&lt;a href="http://lab.msdn.microsoft.com/vs2005/teamsystem/"&gt;&lt;font face="Verdana" size="2"&gt;Visual Studio Team System&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Wow.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;No wonder the blogosphere is &lt;/font&gt;&lt;a href="http://weblogs.asp.net/robcaron/archive/2004/09/09/227765.aspx"&gt;&lt;font face="Verdana" size="2"&gt;ablaze&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; with Team System discussions.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Where did they find the time to build all that stuff?&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Verdana" size="2"&gt;I was fortunate enough to be invited by &lt;/font&gt;&lt;a href="http://www.ineta.jp/"&gt;&lt;font face="Verdana" size="2"&gt;INETA Japan&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; to participate in a panel discussion on &lt;/font&gt;&lt;a href="http://research.microsoft.com/Comega/"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;C&lt;span lang="JA" style="mso-ansi-language: JA"&gt;ω&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;, a "strongly typed, data oriented programming language that bridges the gap between semi-structured hierarchical data (XML), relational data (SQL), and the .NET Common Type System (CTS)."&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;I began thinking what VB could do with C&lt;span lang="JA" style="mso-ansi-language: JA"&gt;ω&lt;/span&gt;-like features.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Some of the features such as streams, anonymous structures, and choice types seem an ill-fit for VB, but the ideas of concurrency and integrated SQL expressions are particularly appealing.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Imagine an application whose memory store is implemented as a database.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;The benefits are obvious--sophisticated search, sort, scalability, and persistence are automatically available.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Combine the database server with a garbage collector and you have a generalized memory manager, albeit one suited for web applications spread across geographically distant servers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;But programming such a model today is difficult because the interface between source code and database in most languages is too complicated, not only for fetching and storing data but also for doing it in an asynchronous manner.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;A language that simplifies this code/database interface would be quite compelling.&lt;span style="FONT-SIZE: 8.5pt; FONT-FAMILY: 'MS Shell Dlg'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;The C&lt;span lang="JA" style="mso-ansi-language: JA"&gt;ω&lt;/span&gt; feature which bothers me most is support for &lt;/font&gt;&lt;a href="http://research.microsoft.com/Comega/doc/comega_whatis.htm"&gt;&lt;font face="Verdana" size="2"&gt;XML syntax&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;XML may be the best thing since sliced bread, but this seems done more for the sake of fashion than functionality.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;I see the benefits, but XML... inlined in my source code?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Bleh.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;It's not aesthetically pleasing.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;I dislike XML comments for the same reason (but unfortunately they made it into VB).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Perhaps I eat my own words here;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;SQL syntax seems similarly bolted on.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;I agree, but it's the &lt;i style="mso-bidi-font-style: normal"&gt;idea&lt;/i&gt; of closing the code/database gap which is compelling, not which specific syntax is used.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span lang="JA" style="mso-ansi-language: JA"&gt;Overall, though, Cω&lt;/span&gt; looks really neat.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;In particular, the SQL integration elicited oohs and ahhs from the normally reserved audience.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Thanks go to INETA Japan for inviting me to the discussion.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=227798" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx">VB Language</category></item><item><title>TechEd Impressions</title><link>http://blogs.msdn.com/cambecc/archive/2004/09/08/226719.aspx</link><pubDate>Thu, 09 Sep 2004 02:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:226719</guid><dc:creator>cambecc</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/cambecc/comments/226719.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cambecc/commentrss.aspx?PostID=226719</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;I've finished my last session for the day here at TechEd. Right now I'm staring out over &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PlaceName w:st="on"&gt;Yokohama&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Bay&lt;/st1:PlaceType&gt; where the expansive &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Yokohama&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Bay&lt;/st1:PlaceType&gt; &lt;st1:PlaceType w:st="on"&gt;Bridge&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; dominates the view.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;I attended the VB 2005 session this afternoon to see what the audience was like and what kind of topics were discussed. The room, which sits about 1200, was probably 1/3 full (the same was true for the C# session immediately following). The presentation started out with demos of new language features such as My, unsigned types, operator overloading, and generics, and ended up discussing application settings and project related improvements.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;I sometimes forget that there is so much more to VB than the core language. The VB language and IDE team (the folks who do Intellisense, Edit &amp;amp; Continue, etc.) at Microsoft has historically been around 10 people in size, but there are 20 to 30 other developers in VB working on vital features such as Data, Project, and Deployment.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;Talked with a few attendees after the session&amp;nbsp;and asked what they thought about the new features in VB 2005. The favorite by far was Edit &amp;amp; Continue. I asked about Refactoring (prominently featured in C#) and the reception was lukewarm. My Japanese isn't good enough, so I couldn't figure out the reason why.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;I am surprised with how many women are attending TechEd, and I don't know whether it's &lt;st1:place w:st="on"&gt;&lt;st1:country-region w:st="on"&gt;Japan&lt;/st1:country-region&gt;&lt;/st1:place&gt; or a general industry trend (&lt;/font&gt;&lt;a href="http://www.theregister.co.uk/2004/08/13/eoc_study/"&gt;&lt;font face="Verdana" size="2"&gt;maybe not&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;). We, society as a whole, need more women working in IT. The industry simply cannot grow and innovate if 50% of society's intelligence resources aren't significantly involved.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" size="2"&gt;More to follow tomorrow.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=226719" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx">VB Language</category><category domain="http://blogs.msdn.com/cambecc/archive/tags/Japan/default.aspx">Japan</category></item><item><title>An Abstract Specification for Visual Basic Late Binding</title><link>http://blogs.msdn.com/cambecc/archive/2004/06/27/166868.aspx</link><pubDate>Sun, 27 Jun 2004 09:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:166868</guid><dc:creator>cambecc</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/cambecc/comments/166868.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cambecc/commentrss.aspx?PostID=166868</wfw:commentRss><description>An Abstract Specification for Visual Basic Late Binding...(&lt;a href="http://blogs.msdn.com/cambecc/archive/2004/06/27/166868.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=166868" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx">VB Language</category></item><item><title>The Anatomy of a Late Bound Expression</title><link>http://blogs.msdn.com/cambecc/archive/2004/06/01/145309.aspx</link><pubDate>Wed, 02 Jun 2004 02:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:145309</guid><dc:creator>cambecc</dc:creator><slash:comments>15</slash:comments><comments>http://blogs.msdn.com/cambecc/comments/145309.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cambecc/commentrss.aspx?PostID=145309</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;When I first arrived at Microsoft to work on the Visual Basic team, I had no idea what Late Binding was. My manager at the time explained it to me: "Late Binding is all about figuring out which methods to call &lt;I&gt;while the program runs&lt;/I&gt;. It's complicated. You're going to work on something else." This spawned more questions. How is it done? What happens behind the scenes? What's involved? For awhile, Late Binding remained a black box to me, but eventually I learned the answers to these questions.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;The process of figuring out what methods to call and fields to use is called "member lookup and resolution", or "binding". Most of the time, the compiler binds method calls &lt;I&gt;during compilation&lt;/I&gt;, a process we call Early Binding (well, some of us do). However, if your program uses types that aren't known during compilation, binding is deferred and instead performed &lt;I&gt;while the program runs&lt;/I&gt;. This process is called Late Binding and is best described with an example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Class&lt;/SPAN&gt; Queen&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; Move(&lt;SPAN style="COLOR: blue"&gt;ByRef&lt;/SPAN&gt; x &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; y &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&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;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; Replay(&lt;SPAN style="COLOR: blue"&gt;ByRef&lt;/SPAN&gt; x &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; y &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Date&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; z &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&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;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Class&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Class&lt;/SPAN&gt; Knight&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; ResetPosition()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&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;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Class&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; Main()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; a &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String &lt;/SPAN&gt;= ...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; b &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Integer&lt;/SPAN&gt; = ...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; x &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Queen &lt;/SPAN&gt;= ...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; o &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt; = ...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.Move(a, b)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.Move(a, b)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;The expression &lt;B&gt;x.Move(a, b)&lt;/B&gt; is a call to the method &lt;B&gt;Move&lt;/B&gt; defined on &lt;B&gt;Queen&lt;/B&gt; (determined from the type of variable &lt;B&gt;x&lt;/B&gt;). The compiler, via the process of Early Binding, figures out that the text "Move" refers to method &lt;B&gt;Move&lt;/B&gt; on type &lt;B&gt;Queen&lt;/B&gt;, taking two &lt;B&gt;String&lt;/B&gt; parameters. The compiler successfully analyzes this statement (i.e., binds the call) and moves to the next line.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;The expression &lt;B&gt;o.Move(a,b)&lt;/B&gt; is also a call to method &lt;B&gt;Move&lt;/B&gt;, but on which type? The variable &lt;B&gt;o&lt;/B&gt; is &lt;B&gt;Object&lt;/B&gt; and can hold anything depending on the program's run-time behavior. Sometimes it might hold instances of &lt;B&gt;Queen&lt;/B&gt; objects; sometimes &lt;B&gt;Knight&lt;/B&gt; objects (or anything else for that matter). This is where Late Binding comes into action.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;The compiler always tries Early Binding first. &lt;B&gt;Move&lt;/B&gt; isn't a member of &lt;B&gt;System.Object&lt;/B&gt;, so Early Binding fails. Normally, compilation stops here and a compile error results. However, because &lt;B&gt;o&lt;/B&gt; is &lt;B&gt;Object&lt;/B&gt;, because it can hold anything, the compiler defers binding and turns this expression into a Late Bound expression. The deferral is made by changing &lt;B&gt;o.Move(a, b)&lt;/B&gt; into a helper function call. This helper function, which lives in the Late Binder (which itself is found in Microsoft.VisualBasic.dll), looks something like this:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; LateCall( _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; Instance &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; MethodName &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; Arguments() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; ArgumentNames() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; CopyBack() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;'implementation&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;The corresponding VB code generated for &lt;B&gt;o.Move(a, b)&lt;/B&gt; looks something like:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _args &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;() = {a, b}&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 style="COLOR: green"&gt;'temporary variable&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _copyback &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;() = {&lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;}&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;'temporary variable&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.VisualBasic.CompilerServices.LateCall(o, "Move", _args, &lt;SPAN style="COLOR: blue"&gt;Nothing&lt;/SPAN&gt;, _copyback)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;The method we're trying to call is &lt;B&gt;Move&lt;/B&gt;. At compilation time we know only its name, so the &lt;I&gt;MethodName&lt;/I&gt; parameter is the string "Move". The &lt;I&gt;Instance&lt;/I&gt; parameter is &lt;B&gt;o&lt;/B&gt;, the object on which we want to invoke &lt;B&gt;Move&lt;/B&gt;. And the call has two arguments, &lt;B&gt;a&lt;/B&gt; and &lt;B&gt;b&lt;/B&gt;, so the compiler packages them into an array and passes them to the &lt;I&gt;Arguments&lt;/I&gt; parameter. (For now, we will skip discussion of the &lt;I&gt;ArgumentNames&lt;/I&gt; and &lt;I&gt;CopyBack&lt;/I&gt; parameters.)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;When the program runs and the line &lt;B&gt;o.Move(a, b)&lt;/B&gt; is reached, the call into the Late Binder is made. Because the object sitting in &lt;B&gt;o&lt;/B&gt; has a definite type, the Late Binder has all the information it needs to bind the call to &lt;B&gt;Move&lt;/B&gt;. It performs the full member lookup and resolution process, a process which in many ways is analogous to the Early Binding done by the VB compiler. For example, &lt;B&gt;o&lt;/B&gt; might be an object of type &lt;B&gt;Queen&lt;/B&gt;, so the Late Binder figures out that the string "Move" refers to method &lt;B&gt;Move&lt;/B&gt; on type &lt;B&gt;Queen&lt;/B&gt;, taking two &lt;B&gt;String&lt;/B&gt; parameters. Success! The method &lt;B&gt;Queen.Move&lt;/B&gt; is invoked and the program continues running. However, &lt;B&gt;o&lt;/B&gt; might be an object of type &lt;B&gt;Knight&lt;/B&gt;. &lt;B&gt;Knight&lt;/B&gt; has no method &lt;B&gt;Move&lt;/B&gt;, so in this case, member lookup and resolution fails and the Late Binder throws a &lt;B&gt;MissingMemberException&lt;/B&gt;. This is the equivalent of getting the compile error "'Move' is not a member of 'Knight'" were the variable &lt;B&gt;o&lt;/B&gt; typed as &lt;B&gt;Knight&lt;/B&gt; instead of &lt;B&gt;Object&lt;/B&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Now for some details that my manager, back in the day, was eluding to: &lt;B&gt;ByRef&lt;/B&gt; parameters cause trouble. Because a Late Bound expression such as &lt;B&gt;Move&lt;/B&gt; is working with &lt;I&gt;copies&lt;/I&gt; of &lt;B&gt;a&lt;/B&gt; and &lt;B&gt;b&lt;/B&gt; (remember the &lt;I&gt;Arguments&lt;/I&gt; parameter), we have to take special care to copy the values back out if any match a &lt;B&gt;ByRef&lt;/B&gt; parameter. This is done by using the &lt;I&gt;CopyBack&lt;/I&gt; parameter and some conditional statements. The &lt;I&gt;CopyBack&lt;/I&gt; parameter is used by the Late Binder to communicate back to the call site which arguments ended up matching &lt;B&gt;ByRef&lt;/B&gt; parameters. After the call to &lt;B&gt;LateCall&lt;/B&gt; is completed, the &lt;B&gt;Boolean&lt;/B&gt; values stored in the &lt;I&gt;CopyBack&lt;/I&gt; parameter are checked and, if &lt;B&gt;True&lt;/B&gt;, the values are copied-out. This means that along with the helper call, a Late Bound expression also consists of several &lt;B&gt;If..Then&lt;/B&gt; statements that check the &lt;I&gt;CopyBack&lt;/I&gt; parameter:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _args &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;() = {a, b}&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 style="COLOR: green"&gt;'temporary variable&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _copyback &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;() = {&lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;}&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;'temporary variable&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.VisualBasic.CompilerServices.LateCall(o, "Move", _args, &lt;SPAN style="COLOR: blue"&gt;Nothing&lt;/SPAN&gt;, _copyback)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; _copyback(0) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = _args(0)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; _copyback(1) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = _args(0)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Each &lt;B&gt;True&lt;/B&gt; value in the &lt;I&gt;CopyBack&lt;/I&gt; array means that the corresponding argument in the &lt;I&gt;Arguments&lt;/I&gt; array matched a &lt;B&gt;ByRef&lt;/B&gt; parameter and potentially changed during the call invocation. For example, since the zeroth parameter of &lt;B&gt;Queen.Move&lt;/B&gt; is &lt;B&gt;ByRef&lt;/B&gt;, the zeroth value in &lt;I&gt;CopyBack&lt;/I&gt; will be set to &lt;B&gt;True&lt;/B&gt; by the Late Binder, thus causing &lt;B&gt;a&lt;/B&gt; to be assigned the new value.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;But why initialize the &lt;I&gt;CopyBack&lt;/I&gt; array with &lt;B&gt;True&lt;/B&gt; values? Because there's no point checking and copying back values when the original argument isn't a storage location. To communicate this information to the Late Binder, the compiler initializes the &lt;I&gt;CopyBack&lt;/I&gt; array with &lt;B&gt;True&lt;/B&gt; values for each argument that comes from a variable, field, array, etc. If the argument isn't a storage location, such as a constant, function, ReadOnly property, etc., the compiler will specify &lt;B&gt;False&lt;/B&gt; and omit the &lt;B&gt;If..Then&lt;/B&gt; check corresponding to that argument:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.Move(10, b)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;becomes:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _args &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;() = {10, b}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _copyback &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;() = {&lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.VisualBasic.CompilerServices.LateCall(o, "Move", _args, &lt;SPAN style="COLOR: blue"&gt;Nothing&lt;/SPAN&gt;, _copyback)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; _copyback(1) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = _args(0)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;There are even more compliations to consider when named arguments have been specified by the user. For example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.Replay(GetA(), z:=TimeOfDay(), y:=GetB())&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Because named arguments affect binding, the Late Binder needs to know which names were specified and for which arguments. This information is communicated using the &lt;I&gt;ArgumentNames&lt;/I&gt; string array. For example, the &lt;I&gt;ArgumentNames&lt;/I&gt; array for the expression above would be &lt;B&gt;{"z", "y"}&lt;/B&gt;. VB rule: once a named argument is specified in the argument list, all subsequent arguments must be named. Naturally, this requirement would force all argument values into the &lt;I&gt;end&lt;/I&gt; of the &lt;I&gt;Arguments&lt;/I&gt; array. However, for simplicity, we would like the same index into the &lt;I&gt;Arguments&lt;/I&gt; array and &lt;I&gt;ArgumentNames&lt;/I&gt; array to refer to matched value-name pairs. This means the compiler must rearrange the argument values into the &lt;I&gt;beginning&lt;/I&gt; of the &lt;I&gt;Arguments&lt;/I&gt; array, which would look like &lt;B&gt;{TimeOfDay(), GetB(), GetA()}&lt;/B&gt;. Yet this tweak contains a hidden complication: order of evaluation. The evaluation of the argument list should occur lexically, left-to-right, where &lt;B&gt;GetA&lt;/B&gt; is invoked before &lt;B&gt;TimeOfDay&lt;/B&gt; which is itself invoked before &lt;B&gt;GetB&lt;/B&gt;. If the &lt;I&gt;Arguments&lt;/I&gt; array were initialized starting from the zeroth index, &lt;B&gt;TimeOfDay&lt;/B&gt; and &lt;B&gt;GetB&lt;/B&gt; would be invoked before &lt;B&gt;GetA&lt;/B&gt;! This could cause serious trouble if these functions had side effects. By initializing the &lt;I&gt;Arguments&lt;/I&gt; array in lexical order, the order of evaluation is preserved:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _args &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;() = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;(2) {}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _args(2) = GetA()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _args(0) = TimeOfDay()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _args(1) = GetB()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _argnames &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;() = {"z", "y"}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; _copyback &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;() = {&lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.VisualBasic.CompilerServices.LateCall(o, "Replay", _args, _argnames, _copyback)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; _copyback(0) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TimeOfDay() = _args(0)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;(note that &lt;B&gt;TimeOfDay&lt;/B&gt; is a read/write property and can be changed if it matches a &lt;B&gt;ByRef&lt;/B&gt; parameter, thus the value &lt;B&gt;True&lt;/B&gt; in the &lt;I&gt;CopyBack&lt;/I&gt; array).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;So far, I have discussed the simplest Late Binding scenario. Matters complicate yet further in other scenarios, where the call &lt;B&gt;o.Move&lt;/B&gt; occurs on either side of an assignment:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.Move(a, b) = c&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;In scenarios such as these, &lt;B&gt;c&lt;/B&gt; must be packaged as another parameter and the whole expression evaluated as a possible &lt;B&gt;Property&lt;/B&gt; or &lt;B&gt;Field&lt;/B&gt; assignment (with a potential intermediate &lt;B&gt;Default Property&lt;/B&gt; access). In fact, each of the following forms represents a unique Late Binding scenario:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.Move(a, b)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.Move(a, b) = c&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = o.Move(a, b)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o(a, b) = c&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = o(a, b)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Only the first statement corresponds to the &lt;B&gt;LateCall&lt;/B&gt; helper we've been analyzing. The other scenarios each have their own helper with various additional arguments to control the unique semantic differences that arise.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;I want to briefly describe what the &lt;B&gt;LateCall&lt;/B&gt; helper actually does. The following is a &lt;I&gt;very&lt;/I&gt; rough implementation and demonstrates how the VB Late Binder interacts with System.Reflection:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; LateCall( _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; Instance &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; MethodName &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; Arguments() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; ArgumentNames() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; CopyBack() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; T &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Type = Instance.GetType&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; Members &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Reflection.MemberInfo() = T.GetMember(MethodName)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; Result &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Reflection.MemberInfo = _&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PerformMemberResolution(Members, Arguments, ArgumentNames)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Select&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Case&lt;/SPAN&gt; Result.MemberType&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Case&lt;/SPAN&gt; MemberTypes.Method&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&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; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; MethodResult &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; MethodInfo = &lt;SPAN style="COLOR: blue"&gt;DirectCast&lt;/SPAN&gt;(Result, MethodInfo)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&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; MethodResult.Invoke(Instance, Arguments)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&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; &lt;SPAN style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Each&lt;/SPAN&gt; P &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; ParameterInfo &lt;SPAN style="COLOR: blue"&gt;In&lt;/SPAN&gt; MethodResult.GetParameters&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&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;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; P.ParameterType.IsByRef &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CopyBack(index_of_P) = &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&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;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&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; &lt;SPAN style="COLOR: blue"&gt;Next&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Case&lt;/SPAN&gt; ...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Select&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;First, Reflection is used to fetch all the members matching &lt;I&gt;MethodName&lt;/I&gt; into an array. This array, along with &lt;I&gt;Arguments&lt;/I&gt; and &lt;I&gt;ArgumentNames&lt;/I&gt;, is passed to a function &lt;B&gt;PerformMemberResolution&lt;/B&gt;. This function is responsible for implementing all of Visual Basic's binding semantics, including name shadowing, method overload resolution, named argument matching, and various other checks. However, selecting the method is only half the work. Once a selection is made, the member must be invoked. In the case of methods, this is done via the &lt;B&gt;Reflection.MethodInfo.Invoke&lt;/B&gt; member. Once execution of the method is complete, the &lt;I&gt;CopyBack&lt;/I&gt; array is populated with the correct values and the Late Bound expression is complete.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;I should have listened to my manager. :)&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=145309" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx">VB Language</category></item><item><title>Operator Overloading</title><link>http://blogs.msdn.com/cambecc/archive/2003/10/20/51265.aspx</link><pubDate>Tue, 21 Oct 2003 03:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:51265</guid><dc:creator>cambecc</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/cambecc/comments/51265.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cambecc/commentrss.aspx?PostID=51265</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;One of
the new features we're adding to Visual Basic is called Operator Overloading.&lt;span
style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;This feature allows the programmer to create
a class that knows what +, -, *, and other operators mean.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;There are
two main components to operator overloading:&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&lt;/span&gt;consumption and declaration. (Actually, I've just described a major precept of language design. Although
they go hand-in-hand, the declaration form of a feature and the consumption
form of a feature are two intrinsically different concepts. The dichotomy
reveals itself even in .NET executables. When people talk about
&amp;quot;metadata&amp;quot;, they are referring to declarations. When people talk
about intermediate language (IL) &lt;span class=SpellE&gt;opcodes&lt;/span&gt;, they are
referring to consumption.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;Let's take
a look at consumption first with an example.&lt;span style='mso-spacerun:yes'&gt;The &lt;span class=SpellE&gt;System.Drawing&lt;/span&gt; namespace contains the
types Point and Size. A new point can be
calculated by adding or subtracting a size from an already existing point. Programmatically, the + and – operators lend
themselves naturally to this calculation:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Dim&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
p1 &lt;span style='color:blue'&gt;As&lt;/span&gt; &lt;span style='color:blue'&gt;New&lt;/span&gt; &lt;span
class=GramE&gt;Point(&lt;/span&gt;10, 10)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Dim&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
s1 &lt;span style='color:blue'&gt;As&lt;/span&gt; &lt;span style='color:blue'&gt;New&lt;/span&gt; &lt;span
class=GramE&gt;Size(&lt;/span&gt;20, -10)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Dim&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
p3 &lt;span style='color:blue'&gt;As&lt;/span&gt; Point = p1 + s1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Dim&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
p4 &lt;span style='color:blue'&gt;As&lt;/span&gt; Point = p1 - s1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span class=SpellE&gt;&lt;span class=GramE&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;MsgBox&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;p3.ToString)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span class=SpellE&gt;&lt;span
class=GramE&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;MsgBox&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;p4.ToString)&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;Because
Point overloads the + and - operators, this code compiles and works as
expected, outputting:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console"'&gt;{X=30&lt;span class=GramE&gt;,Y&lt;/span&gt;=0}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console"'&gt;{X=-10&lt;span class=GramE&gt;,Y&lt;/span&gt;=20}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;How was
this done? When the compiler analyzes
the expression &amp;quot;p1 + s1&amp;quot;, it discovers the type of &amp;quot;p1&amp;quot; is
Point and that Point defines Operator +. Operators are actually just functions with funny names, so the compiler
turns &amp;quot;p1 + s1&amp;quot; into a function call, equivalently written as:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Dim&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
p3 &lt;span style='color:blue'&gt;As&lt;/span&gt; Point = &lt;span class=SpellE&gt;System.Drawing.Point.op_&lt;span
class=GramE&gt;Addition&lt;/span&gt;&lt;/span&gt;&lt;span class=GramE&gt;(&lt;/span&gt;p1, s1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;i style='mso-bidi-font-style:normal'&gt;&lt;span
style='font-size:10.0pt;font-family:Verdana'&gt;This is the key to understanding
overloaded operators&lt;/span&gt;&lt;/i&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;: they are just functions. An expression like &amp;quot;a + b&amp;quot; is
really a call to the + operator with two arguments: &amp;quot;&lt;span class=GramE&gt;+(&lt;/span&gt;a,
b)&amp;quot;. Because member names cannot
contain symbols like &amp;quot;+&amp;quot;, the compiler uses a special name behind the
scenes: &amp;quot;&lt;span class=SpellE&gt;op_&lt;span class=GramE&gt;Addition&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;a, b)&amp;quot;. And as
functions, the compiler uses normal overload resolution rules to pick the
correct overload (in exactly the same way the compiler uses these rules to pick
the correct overload of &lt;span class=SpellE&gt;Console.WriteLine&lt;/span&gt;, which at
last count had 19 overloads!).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;Perhaps
you can guess what the declarations of overloaded operators look like&lt;span
class=GramE&gt;; they're&lt;/span&gt; an awful
lot like functions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Public&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
&lt;span style='color:blue'&gt;Shared&lt;/span&gt; &lt;span style='color:blue'&gt;Operator&lt;/span&gt;
&lt;span class=GramE&gt;+(&lt;/span&gt;&lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/span&gt;
Left &lt;span style='color:blue'&gt;As&lt;/span&gt; Point, &lt;span class=SpellE&gt;&lt;span
style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/span&gt; Right &lt;span style='color:blue'&gt;As&lt;/span&gt;
Size) &lt;span style='color:blue'&gt;As&lt;/span&gt; Point&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Return
New &lt;span class=GramE&gt;Point(&lt;/span&gt;&lt;span class=SpellE&gt;Left.X&lt;/span&gt; + &lt;span
class=SpellE&gt;Right.Width&lt;/span&gt;, &lt;span class=SpellE&gt;Left.Y&lt;/span&gt; + &lt;span
class=SpellE&gt;Right.Height&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;End&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
&lt;span style='color:blue'&gt;Operator&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Public&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
&lt;span style='color:blue'&gt;Shared&lt;/span&gt; &lt;span style='color:blue'&gt;Operator&lt;/span&gt;
&lt;span class=GramE&gt;-(&lt;/span&gt;&lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/span&gt;
Left &lt;span style='color:blue'&gt;As&lt;/span&gt; Point, &lt;span class=SpellE&gt;&lt;span
style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/span&gt; Right &lt;span style='color:blue'&gt;As&lt;/span&gt;
Size) &lt;span style='color:blue'&gt;As&lt;/span&gt; Point&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Return
New &lt;span class=GramE&gt;Point(&lt;/span&gt;&lt;span class=SpellE&gt;Left.X&lt;/span&gt; – &lt;span
class=SpellE&gt;Right.Width&lt;/span&gt;, &lt;span class=SpellE&gt;Left.Y&lt;/span&gt; – &lt;span
class=SpellE&gt;Right.Height&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;End&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
&lt;span style='color:blue'&gt;Operator&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;The
Visual Basic compiler will allow you to overload several operators, summarized
in the table below:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;table class=MsoTableGrid border=0 cellspacing=0 cellpadding=0
 style='border-collapse:collapse;mso-yfti-tbllook:480;mso-padding-alt:0in 5.4pt 0in 5.4pt'&gt;
 &lt;tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;+ (unary)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:1'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;-&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;- (unary)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:2'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;\&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:3'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;^&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:4'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;amp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;Like&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:5'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;Mod&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;And&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:6'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;Or&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;Xor&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:7'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;Not&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;lt;&amp;lt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:8'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;= (comparison only)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:9'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;lt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;lt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:10'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;lt;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:11'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&amp;gt;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;CType&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;IsTrue&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=295 valign=top style='width:221.4pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;IsFalse&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:"Lucida Console"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span class=SpellE&gt;&lt;span style='font-size:10.0pt;font-family:
Verdana'&gt;CType&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;,
&lt;span class=SpellE&gt;IsTrue&lt;/span&gt; and &lt;span class=SpellE&gt;IsFalse&lt;/span&gt; are
special and I'll cover those in a future entry. But quickly, you can overload conversions between types using the &lt;span
class=SpellE&gt;CType&lt;/span&gt; operator (instead of overloading the = assignment
operator). And &lt;span class=SpellE&gt;IsTrue&lt;/span&gt;
and &lt;span class=SpellE&gt;IsFalse&lt;/span&gt; are for overloading &lt;span class=SpellE&gt;AndAlso&lt;/span&gt;
and &lt;span class=SpellE&gt;OrElse&lt;/span&gt; which are &lt;span class=GramE&gt;themselves&lt;/span&gt;
not directly &lt;span class=SpellE&gt;overloadable&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;A few
rules greatly simplify the design and use of operator overloading: each operator declaration must be Public and
Shared, and must be declared in the same type as one of its operands. And some operators, like &amp;lt;= and &amp;gt;=,
must be pair-wise declared, i.e., a declaration of one requires an identical
declaration of the other. You'll find,
as I did, that these simple rules make understanding operator overloading much,
much easier.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;More info
to follow...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=51265" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx">VB Language</category></item><item><title>Unsigned Types</title><link>http://blogs.msdn.com/cambecc/archive/2003/08/18/51261.aspx</link><pubDate>Tue, 19 Aug 2003 00:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:51261</guid><dc:creator>cambecc</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/cambecc/comments/51261.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cambecc/commentrss.aspx?PostID=51261</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;As you
may have seen on the roadmap (&lt;a
href="http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx"&gt;http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx&lt;/a&gt;),
we've been working on several new language features for VB .NET.&lt;span
style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;One of them includes unsigned types.&lt;span
style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Yes, VB is finally getting unsigned types,
and this will make some tasks a lot easier.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;Specifically,
we are adding intrinsic support for four new integral types, three of them
unsigned, one of them signed.&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Here's a
table which describes the new types:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;table class=MsoTableGrid border=0 cellspacing=0 cellpadding=0
 style='border-collapse:collapse;mso-yfti-tbllook:480;mso-padding-alt:0in 5.4pt 0in 5.4pt'&gt;
 &lt;tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;b
  style='mso-bidi-font-weight:normal'&gt;&lt;span style='font-size:8.0pt;font-family:
  Verdana'&gt;VB Keyword&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;b
  style='mso-bidi-font-weight:normal'&gt;&lt;span style='font-size:8.0pt;font-family:
  Verdana'&gt;Conversion Operator&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;b
  style='mso-bidi-font-weight:normal'&gt;&lt;span style='font-size:8.0pt;font-family:
  Verdana'&gt;Type Character&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;b
  style='mso-bidi-font-weight:normal'&gt;&lt;span style='font-size:8.0pt;font-family:
  Verdana'&gt;CLR Name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:1'&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;SByte&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;CSByte&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;(o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;--none--&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;System.SByte&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:2'&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;UShort&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;CUShort&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;(o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;US&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;System.UInt16&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:3'&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;UInteger&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;CUInt&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;(o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;UI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;System.UInt32&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;ULong&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span class=SpellE&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;CULng&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;(o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;UL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=148 valign=top style='width:110.7pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  &lt;p class=MsoNormal align=center style='text-align:center'&gt;&lt;span
  style='font-size:10.0pt;font-family:Verdana'&gt;System.UInt64&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;For
consistency with earlier versions of VB, the name of the original type makes up
the root of the new name, prefixed by a U (or S) to denote the &lt;span
class=SpellE&gt;signededness&lt;/span&gt; of the type.&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;We used a similar approach to name the conversion operators and type
characters.&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=SpellE&gt;&lt;b
style='mso-bidi-font-weight:normal'&gt;SByte&lt;/b&gt;&lt;/span&gt; has no type character
because &lt;b style='mso-bidi-font-weight:normal'&gt;Byte&lt;/b&gt; has no type character.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;Here's a
code snippet which uses each of these new types:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Module&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
Module1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;Sub&lt;/span&gt; &lt;st1:place w:st="on"&gt;&lt;span class=GramE&gt;Main&lt;/span&gt;&lt;/st1:place&gt;&lt;span
class=GramE&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt; a &lt;span style='color:blue'&gt;As&lt;/span&gt;
&lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;SByte&lt;/span&gt;&lt;/span&gt; = -127&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt; b &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;UShort&lt;/span&gt;&lt;/span&gt;
= 65535&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt; c &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;UInteger&lt;/span&gt;&lt;/span&gt;
= 4294967295&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt; d &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;ULong&lt;/span&gt;&lt;/span&gt;
= 18446744073709551615UL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt; o &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span style='color:blue'&gt;Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;o = &lt;span class=SpellE&gt;&lt;span class=GramE&gt;&lt;span style='color:blue'&gt;CSByte&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;42)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;a = &lt;span class=SpellE&gt;&lt;span class=GramE&gt;&lt;span style='color:blue'&gt;CSByte&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;o = 42US&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;b = &lt;span class=SpellE&gt;&lt;span class=GramE&gt;&lt;span style='color:blue'&gt;CUShort&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;o = 42UI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;c = &lt;span class=SpellE&gt;&lt;span class=GramE&gt;&lt;span style='color:blue'&gt;CUInt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;o = 42UL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;c = &lt;span class=SpellE&gt;&lt;span class=GramE&gt;&lt;span style='color:blue'&gt;CULng&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;o)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;End&lt;/span&gt; &lt;span style='color:blue'&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console";mso-bidi-font-family:"Courier New";color:blue'&gt;End&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
&lt;span style='color:blue'&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;Of
course, this snippet is a contrived example demonstrating the new syntax.&lt;span
style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Here's a real-world example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;Module&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
&lt;span class=SpellE&gt;ExternalFunctions&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;Structure&lt;/span&gt; INFO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt; KIND &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;UShort&lt;/span&gt;&lt;/span&gt;&lt;span
style='color:blue'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt; FLAGS &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;UShort&lt;/span&gt;&lt;/span&gt;&lt;span
style='color:blue'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt; DATA &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;UInteger&lt;/span&gt;&lt;/span&gt;&lt;span
style='color:blue'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;End&lt;/span&gt; &lt;span style='color:blue'&gt;Structure&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;Declare&lt;/span&gt; &lt;span style='color:blue'&gt;Auto&lt;/span&gt; &lt;span
style='color:blue'&gt;Sub&lt;/span&gt; &lt;span class=SpellE&gt;GetData&lt;/span&gt; &lt;span
style='color:blue'&gt;Lib&lt;/span&gt; &amp;quot;&lt;span class=SpellE&gt;mylib&lt;/span&gt;&amp;quot; (&lt;span
class=SpellE&gt;&lt;span style='color:blue'&gt;ByRef&lt;/span&gt;&lt;/span&gt; Info &lt;span
class=GramE&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; INFO)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;Declare&lt;/span&gt; &lt;span style='color:blue'&gt;Auto&lt;/span&gt; &lt;span
style='color:blue'&gt;Function&lt;/span&gt; &lt;span class=SpellE&gt;GetCount&lt;/span&gt; &lt;span
style='color:blue'&gt;Lib&lt;/span&gt; &amp;quot;&lt;span class=SpellE&gt;mylib&lt;/span&gt;&amp;quot; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;&lt;span
style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;(&lt;span
class=SpellE&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/span&gt; Index &lt;span
class=GramE&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style='color:blue'&gt; &lt;span
class=SpellE&gt;UInteger&lt;/span&gt;&lt;/span&gt;) &lt;span style='color:blue'&gt;As&lt;/span&gt; &lt;span
class=SpellE&gt;&lt;span style='color:blue'&gt;UInteger&lt;/span&gt;&lt;/span&gt;&lt;span
style='color:blue'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;Sub&lt;/span&gt; &lt;span class=GramE&gt;Enumerate()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;For&lt;/span&gt; &lt;span class=SpellE&gt;i&lt;/span&gt; &lt;span
style='color:blue'&gt;As&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style='color:blue'&gt;UInteger&lt;/span&gt;&lt;/span&gt;
= 0 &lt;span style='color:blue'&gt;To&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span class=GramE&gt;GetCount&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;10)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&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;span style='color:blue'&gt;Dim&lt;/span&gt; Info &lt;span class=GramE&gt;&lt;span
style='color:blue'&gt;As&lt;/span&gt;&lt;/span&gt; INFO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&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;span class=SpellE&gt;&lt;span class=GramE&gt;GetData&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;Info)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&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;span class=SpellE&gt;&lt;span class=GramE&gt;Console.WriteLine&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;&lt;span class=SpellE&gt;Info.KIND&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&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;span class=SpellE&gt;&lt;span class=GramE&gt;Console.WriteLine&lt;/span&gt;&lt;/span&gt;&lt;span
class=GramE&gt;(&lt;/span&gt;&lt;span class=SpellE&gt;Info.DATA&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style='color:blue'&gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New"'&gt;&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span
style='color:blue'&gt;End&lt;/span&gt; &lt;span style='color:blue'&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style='font-size:10.0pt;font-family:"Lucida Console";
mso-bidi-font-family:"Courier New";color:blue'&gt;End&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Lucida Console";mso-bidi-font-family:"Courier New"'&gt;
&lt;span style='color:blue'&gt;Module&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;One final
note:&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;unsigned types also affect method
overload resolution.&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;If two methods are
equally applicable because the argument types do not exactly match the
signature, yet the methods differ only by the &lt;span class=SpellE&gt;signededness&lt;/span&gt;
of a parameter, the method with the signed parameter wins (except for &lt;span
class=SpellE&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;SByte&lt;/b&gt;&lt;/span&gt; and &lt;b
style='mso-bidi-font-weight:normal'&gt;Byte&lt;/b&gt;, where &lt;b style='mso-bidi-font-weight:
normal'&gt;Byte&lt;/b&gt; wins).&lt;span style='mso-spacerun:yes'&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;This rule
reduces the occurrence of ambiguity errors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;span style='font-size:10.0pt;font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=51261" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cambecc/archive/tags/VB+Language/default.aspx">VB Language</category></item></channel></rss>