<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Fletcher Dunton</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/default.aspx</link><description>Strategy without tactics is a slow road to success...
       Tactics without strategy is a sure road to failure</description><dc:language>en-US</dc:language><generator>CommunityServer 1.0 (Build: 1.0.1.50214)</generator><item><title>Issues with VS Orcas Beta 1 VPC and ASP.NET</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2007/08/20/286819.aspx</link><pubDate>Mon, 20 Aug 2007 20:33:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:286819</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/286819.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=286819</wfw:commentRss><description>&lt;P&gt;Like many folks have found, there are some issues to work out with VS Orcas Beta 1 VPC and ASP.NET:&lt;/P&gt;
&lt;P&gt;Here's Rockford’s Blog, the first I found that clued my in to the problem of IIS 6.0 not being setup and enabled properly:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.lhotka.net/WeBlog/SearchView.aspx?q=IIS"&gt;http://www.lhotka.net/WeBlog/SearchView.aspx?q=IIS&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here are a few on my own notes to help you going...&lt;/P&gt;
&lt;P&gt;I. Enable IIS in Windows 2003 !!!!&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Check and if need, Install Internet Information Services (IIS) 6.0:&lt;/LI&gt;
&lt;LI&gt;Run Ad/Remove Programs:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Open the Windows Components Wizard. &lt;/LI&gt;
&lt;LI&gt;Under Components, click Application Server, and then click Details.&lt;/LI&gt;
&lt;LI&gt;In the Application Server dialog box, under Subcomponents of Application Server, click Internet Information Services (IIS), and then click Details. &lt;/LI&gt;
&lt;LI&gt;In the Internet Information Services (IIS) dialog box, under Subcomponents of Internet Information Services (IIS), do either of the following: &lt;/LI&gt;
&lt;LI&gt;To add optional components, select the check box next to the component that you want to install. &lt;/LI&gt;
&lt;LI&gt;To remove optional components, clear the check box next to the component that you want to remove. &lt;/LI&gt;
&lt;LI&gt;Click OK until you return to the Windows Component Wizard.&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Verify that ASP.Net is checked and if not, check it and proceed with installation.Click Next, and then click Finish. &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;II. To verify that your IIS server is working correctly, use an Internet browser to view your Web page:&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=286819" width="1" height="1"&gt;</description></item><item><title>Responsible Managment of XML DOM's</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/09/08/146641.aspx</link><pubDate>Fri, 08 Sep 2006 20:06:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:146641</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/146641.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=146641</wfw:commentRss><description>Folks:
Since System.Xml.LoadXml(strXml) creats&amp;nbsp;an in-memory instance of the System.Xml.XmlDocument&amp;nbsp;you give it, memory usage could possibly become a factor&amp;nbsp;and affect&amp;nbsp;performance in a given application.&amp;nbsp; 
Therefore, in the spirit of good coding practices, what is the responsibility of the developer when&amp;nbsp;you are done with the XML DOM and want to free up memory?&amp;nbsp; 

A. Invoke System.Xml.XmlDocument.RemoveAll()
B. Use the Destructure Supplied with the XmlDocument...(&lt;a href="http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/09/08/146641.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=146641" width="1" height="1"&gt;</description></item><item><title>Fix for Error 21002: [SQL-DMO] User already exists</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/09/08/146628.aspx</link><pubDate>Fri, 08 Sep 2006 13:03:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:146628</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/146628.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=146628</wfw:commentRss><description>I cloned a database back from our DEV server to my local server and it had 1 user account called "webuser". That account had execute permissions on about 120 stored proc's. When I tried to create this user under my LOCAL Server's Security\Login folder, I got the following error: "Error 21002: [SQL-DMO] User 'webuser' already exists."&amp;nbsp; So I&amp;nbsp;went to my database\User folder and try and delete the account and it tells me "The Selected User Cannot be dropped b/c it owns objects".&amp;nbsp;&amp;nbsp;...(&lt;a href="http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/09/08/146628.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=146628" width="1" height="1"&gt;</description></item><item><title>Performance Test Tools for SQL 2000 ?</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/08/31/145708.aspx</link><pubDate>Thu, 31 Aug 2006 15:51:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:145708</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/145708.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=145708</wfw:commentRss><description>&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;A (long) while back I used a Microsoft's tool called "&lt;/FONT&gt;&lt;A href="http://www.sql-server-performance.com/forum/topic.asp?TOPIC_ID=16464#"&gt;&lt;FONT&gt;Database&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; Hammer" to perform load testing on a database. It was implemented in VB 6 I believe and had a few limitations I wasn't happy with. My questions is, are there any newer, better tools out there shy of writing an a small test &lt;/FONT&gt;&lt;A href="http://www.sql-server-performance.com/forum/topic.asp?TOPIC_ID=16464#"&gt;&lt;FONT&gt;app&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;&lt;FONT&gt; each time? Any help is appreciated. Thank you.&amp;nbsp;&amp;nbsp; &lt;IMG title="" src="http://www.sql-server-performance.com/forum/icon_smile.gif"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;FONT&gt;Fletcher Dunton&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;FONT&gt;MCAD, MCP&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=145708" width="1" height="1"&gt;</description></item><item><title>C# / VB.Net Syntax and Language Comparison</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/06/07/140402.aspx</link><pubDate>Thu, 08 Jun 2006 01:29:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:140402</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/140402.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=140402</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Program Structure&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;Imports System &lt;BR&gt;&lt;BR&gt;Namespace Hello&lt;BR&gt;&amp;nbsp;&amp;nbsp; Class HelloWorld &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Overloads Shared Sub Main(ByVal args() As String) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim name As String = "VB.NET" &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;'See if an argument was passed&amp;nbsp;from the command line&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;If args.Length = 1 Then name = args(0) &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Hello, " &amp;amp; name &amp;amp; "!") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub &lt;BR&gt;&amp;nbsp;&amp;nbsp; End Class &lt;BR&gt;End Namespace &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;using System; &lt;BR&gt;&lt;BR&gt;namespace Hello {&lt;BR&gt;&amp;nbsp;&amp;nbsp; public class HelloWorld {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main(string[] args) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string name = "C#";&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// See if an argument was passed from the command line&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (args.Length == 1)&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name = args[0];&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Hello, " + name + "!");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Comments&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Single line only&lt;BR&gt;Rem&amp;nbsp;Single line only&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;// Single line&lt;BR&gt;/* Multiple&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; line&amp;nbsp; */&lt;BR&gt;/// XML comments on single line&lt;BR&gt;/** XML comments on multiple lines */&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Data Types&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Value Types&lt;/SPAN&gt;&lt;BR&gt;Boolean&lt;BR&gt;Byte&lt;BR&gt;Char&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;(example: "A"c)&lt;/SPAN&gt;&lt;BR&gt;Short, Integer, Long&lt;BR&gt;Single, Double&lt;BR&gt;Decimal&lt;BR&gt;Date&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Reference Types&lt;/SPAN&gt;&lt;BR&gt;Object&lt;BR&gt;String&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;Dim x As Integer &lt;BR&gt;Console.WriteLine(x.GetType())&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN&gt;'&amp;nbsp;Prints System.Int32&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(GetType(Integer)) &amp;nbsp; &lt;SPAN&gt;' Prints System.Int32&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(TypeName(x))&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN&gt;' Prints Integer&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;'&amp;nbsp;Type conversion&lt;/SPAN&gt;&lt;BR&gt;Dim d As Single = 3.5 &lt;BR&gt;Dim i As Integer = CType(d, Integer)&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' set to 4 (Banker's rounding)&lt;/SPAN&gt;&lt;BR&gt;i = CInt(d)&amp;nbsp; &lt;SPAN&gt;' same result as CType&lt;/SPAN&gt;&lt;BR&gt;i = Int(d)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' set to 3 (Int function truncates the decimal)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Value Types&lt;/SPAN&gt;&lt;BR&gt;bool&lt;BR&gt;byte, sbyte&lt;BR&gt;char&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;(example: 'A')&lt;/SPAN&gt;&lt;BR&gt;short, ushort, int, uint, long, ulong&lt;BR&gt;float,&amp;nbsp;double&lt;BR&gt;decimal&lt;BR&gt;DateTime&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;(not a built-in C#&amp;nbsp;type)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Reference Types&lt;/SPAN&gt;&lt;BR&gt;object&lt;BR&gt;string&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;int x;&lt;BR&gt;Console.WriteLine(x.GetType());&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;// Prints System.Int32&lt;/SPAN&gt;&lt;BR&gt;Console.WriteLine(typeof(int));&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;SPAN&gt;// Prints System.Int32&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(x.GetType().Name); &amp;nbsp; &lt;SPAN&gt;// prints Int32&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;FONT&gt;// Type conversion&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT&gt;&lt;FONT&gt; &lt;BR&gt;float d = 3.5f; &lt;BR&gt;int i = (int)d;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// set to&amp;nbsp;3&amp;nbsp; (truncates decimal)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Constants&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;Const&amp;nbsp;MAX_STUDENTS As Integer = 25 &lt;/FONT&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Can set to a const or&amp;nbsp;var; may be initialized in a constructor&lt;/SPAN&gt;&lt;BR&gt;ReadOnly MIN_DIAMETER As Single = 4.93 &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;const int MAX_STUDENTS = 25; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Can set to a const or var; may be initialized in a constructor &lt;/SPAN&gt;&lt;BR&gt;readonly float MIN_DIAMETER = 4.93f; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Enumerations&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Enum Action &lt;BR&gt;&amp;nbsp; Start&amp;nbsp;&lt;BR&gt;&amp;nbsp; [Stop]&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;' Stop&amp;nbsp;is a reserved word&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp; Rewind &lt;BR&gt;&amp;nbsp; Forward &lt;BR&gt;End Enum &lt;BR&gt;&lt;BR&gt;Enum&amp;nbsp;Status &lt;BR&gt;&amp;nbsp; Flunk = 50 &lt;BR&gt;&amp;nbsp; Pass = 70 &lt;BR&gt;&amp;nbsp; Excel = 90 &lt;BR&gt;End Enum&lt;BR&gt;&lt;BR&gt;Dim a As Action = Action.Stop &lt;BR&gt;If a &amp;lt;&amp;gt; Action.Start Then _ &lt;BR&gt;&amp;nbsp; &amp;nbsp;Console.WriteLine(a.ToString &amp;amp; " is " &amp;amp; a)&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;SPAN&gt;' Prints "Stop is 1"&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;Console.WriteLine(Status.Pass)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;' Prints 70&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(Status.Pass.ToString())&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;' Prints Pass&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;&lt;FONT&gt;enum Action {Start, Stop, Rewind, Forward};&lt;BR&gt;enum Status {Flunk = 50, Pass = 70, Excel = 90};&lt;BR&gt;&lt;BR&gt;Action a = Action.Stop;&lt;BR&gt;if (a != Action.Start)&lt;BR&gt;&amp;nbsp; Console.WriteLine(a + " is " + (int) a);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;// Prints "Stop is 1"&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;Console.WriteLine((int) Status.Pass);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Prints 70&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(Status.Pass);&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN&gt;// Prints Pass&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Operators&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Comparison&lt;/SPAN&gt;&lt;BR&gt;=&amp;nbsp; &amp;lt;&amp;nbsp; &amp;gt;&amp;nbsp; &amp;lt;=&amp;nbsp; &amp;gt;=&amp;nbsp; &amp;lt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Arithmetic&lt;/SPAN&gt;&lt;BR&gt;+&amp;nbsp; -&amp;nbsp; *&amp;nbsp; /&lt;BR&gt;Mod&lt;BR&gt;\&amp;nbsp; &lt;SPAN&gt;(integer division)&lt;/SPAN&gt;&lt;BR&gt;^&amp;nbsp; &lt;SPAN&gt;(raise to a power)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Assignment&lt;/SPAN&gt;&lt;BR&gt;=&amp;nbsp; +=&amp;nbsp; -=&amp;nbsp; *=&amp;nbsp; /=&amp;nbsp; \= &amp;nbsp;^=&amp;nbsp; &amp;lt;&amp;lt;= &amp;nbsp;&amp;gt;&amp;gt;=&amp;nbsp; &amp;amp;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Bitwise&lt;/SPAN&gt;&lt;BR&gt;And &amp;nbsp; Or &amp;nbsp; Not &amp;nbsp; &amp;lt;&amp;lt; &amp;nbsp; &amp;gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Logical&lt;/SPAN&gt;&lt;BR&gt;AndAlso &amp;nbsp; OrElse &amp;nbsp; And &amp;nbsp; Or &amp;nbsp; Xor &amp;nbsp; Not&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Note: AndAlso and OrElse perform short-circuit logical evaluations&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;String Concatenation&lt;/SPAN&gt;&lt;BR&gt;&amp;amp; &amp;nbsp; +&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Comparison&lt;/SPAN&gt;&lt;BR&gt;==&amp;nbsp; &amp;lt;&amp;nbsp; &amp;gt;&amp;nbsp; &amp;lt;=&amp;nbsp; &amp;gt;=&amp;nbsp; !=&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Arithmetic&lt;/SPAN&gt;&lt;BR&gt;+&amp;nbsp; -&amp;nbsp; *&amp;nbsp; /&lt;BR&gt;%&amp;nbsp; &lt;SPAN&gt;(mod)&lt;/SPAN&gt;&lt;BR&gt;/&amp;nbsp; &lt;SPAN&gt;(integer division if both operands are ints)&lt;/SPAN&gt;&lt;BR&gt;Math.Pow(x, y)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Assignment&lt;/SPAN&gt;&lt;BR&gt;=&amp;nbsp; +=&amp;nbsp; -= &amp;nbsp;*=&amp;nbsp; /= &amp;nbsp; %=&amp;nbsp; &amp;amp;=&amp;nbsp; |=&amp;nbsp; ^=&amp;nbsp; &amp;lt;&amp;lt;=&amp;nbsp; &amp;gt;&amp;gt;=&amp;nbsp; ++&amp;nbsp; --&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Bitwise&lt;/SPAN&gt;&lt;BR&gt;&amp;amp; &amp;nbsp; | &amp;nbsp; ^ &amp;nbsp; ~ &amp;nbsp; &amp;lt;&amp;lt; &amp;nbsp; &amp;gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Logical&lt;/SPAN&gt;&lt;BR&gt;&amp;amp;&amp;amp; &amp;nbsp; || &amp;nbsp; &amp;amp; &amp;nbsp; | &amp;nbsp; ^ &amp;nbsp; !&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Note: &amp;amp;&amp;amp; and&amp;nbsp;||&amp;nbsp;perform short-circuit logical evaluations&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;String Concatenation&lt;/SPAN&gt;&lt;BR&gt;+&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Choices&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;greeting = IIf(age &amp;lt; 20, "What's up?", "Hello")&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' One line doesn't require "End If"&lt;/SPAN&gt;&lt;BR&gt;If age &amp;lt; 20 Then greeting = "What's up?" &lt;BR&gt;If age &amp;lt; 20 Then greeting = "What's up?" Else greeting = "Hello" &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Use : to put two commands on same line&lt;/SPAN&gt;&lt;BR&gt;If x &amp;lt;&amp;gt; 100 And y &amp;lt; 5 Then x *= 5 : y *= 2&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Preferred&lt;/SPAN&gt;&lt;BR&gt;If x &amp;lt;&amp;gt; 100 And y &amp;lt; 5 Then&lt;BR&gt;&amp;nbsp; x *= 5 &lt;BR&gt;&amp;nbsp; y *= 2&lt;BR&gt;End If&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' To break up any long single line use _&lt;/SPAN&gt;&lt;BR&gt;If whenYouHaveAReally &amp;lt; longLine And _ &lt;BR&gt;&amp;nbsp; itNeedsToBeBrokenInto2&amp;nbsp;&amp;gt; Lines&amp;nbsp;Then _&lt;BR&gt;&amp;nbsp; UseTheUnderscore(charToBreakItUp)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;If x &amp;gt; 5 Then &lt;BR&gt;&amp;nbsp; x *= y &lt;BR&gt;ElseIf&amp;nbsp;x = 5 Then &lt;BR&gt;&amp;nbsp; x += y &lt;BR&gt;ElseIf x &amp;lt; 10 Then &lt;BR&gt;&amp;nbsp; x -= y &lt;BR&gt;Else &lt;BR&gt;&amp;nbsp; x /= y &lt;BR&gt;End If&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Select Case color&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' Must be a primitive data type&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp; Case "pink", "red"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; r += 1 &lt;BR&gt;&amp;nbsp; Case "blue" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b += 1 &lt;BR&gt;&amp;nbsp; Case "green" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g += 1 &lt;BR&gt;&amp;nbsp; Case Else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; other += 1 &lt;BR&gt;End Select &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;greeting = age &amp;lt; 20 ? "What's up?" : "Hello";&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;if (age &amp;lt; 20)&lt;BR&gt;&amp;nbsp; greeting = "What's up?";&lt;BR&gt;else&lt;BR&gt;&amp;nbsp; greeting = "Hello"; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Multiple statements must be enclosed in {}&lt;/SPAN&gt;&lt;BR&gt;if (x != 100 &amp;amp;&amp;amp; y &amp;lt; 5) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; x *= 5;&lt;BR&gt;&amp;nbsp; y *= 2;&lt;BR&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;No need for _ or : since ; is used to terminate each statement.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT&gt;if (x &amp;gt; 5) &lt;BR&gt;&amp;nbsp; x *= y; &lt;BR&gt;else if (x == 5) &lt;BR&gt;&amp;nbsp; x += y; &lt;BR&gt;else if (x &amp;lt; 10) &lt;BR&gt;&amp;nbsp; x -= y; &lt;BR&gt;else &lt;BR&gt;&amp;nbsp; x /= y;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Every case must end with break or goto case&lt;/SPAN&gt; &lt;BR&gt;switch (color)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Must be integer or string&lt;BR&gt;&amp;nbsp; case "pink":&lt;BR&gt;&amp;nbsp; case "red":&amp;nbsp;&amp;nbsp;&amp;nbsp; r++;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;BR&gt;&amp;nbsp; case "blue":&amp;nbsp;&amp;nbsp; b++;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp; case "green": g++;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp; default:&amp;nbsp;&amp;nbsp;&amp;nbsp; other++;&amp;nbsp;&amp;nbsp; break; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// break necessary on default&lt;/SPAN&gt;&lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Loops&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Pre-test Loops:&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;While c &amp;lt; 10 &lt;BR&gt;&amp;nbsp; c += 1 &lt;BR&gt;End While &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Do Until c = 10&amp;nbsp;&lt;BR&gt;&amp;nbsp; c&amp;nbsp;+= 1 &lt;BR&gt;Loop&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;Do While c &amp;lt; 10 &lt;BR&gt;&amp;nbsp; c += 1 &lt;BR&gt;Loop &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;For c = 2 To 10 Step 2 &lt;BR&gt;&amp;nbsp; Console.WriteLine(c) &lt;BR&gt;Next &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;FONT&gt;Post-test Loops:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;Do&amp;nbsp;&lt;BR&gt;&amp;nbsp; c += 1 &lt;BR&gt;Loop While c &amp;lt; 10 &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;Do&amp;nbsp;&lt;BR&gt;&amp;nbsp; c += 1 &lt;BR&gt;Loop Until c = 10 &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;'&amp;nbsp; Array or collection looping&lt;/SPAN&gt;&lt;BR&gt;Dim names As String() = {"Fred", "Sue", "Barney"} &lt;BR&gt;For Each s As String&amp;nbsp;In names &lt;BR&gt;&amp;nbsp; Console.WriteLine(s) &lt;BR&gt;Next &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Breaking out of loops&lt;/SPAN&gt;&lt;BR&gt;Dim i As Integer = 0&lt;BR&gt;While (True)&lt;BR&gt;&amp;nbsp; If (i = 5) Then Exit While&lt;BR&gt;&amp;nbsp; i += 1&lt;BR&gt;End While &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Continue to next iteration&lt;/SPAN&gt;&lt;BR&gt;For i = 0 To 4&lt;BR&gt;&amp;nbsp; If i &amp;lt; 4 Then Continue For&lt;BR&gt;&amp;nbsp; Console.WriteLine(i) &amp;nbsp; &lt;SPAN&gt;' Only prints 4&lt;/SPAN&gt;&lt;BR&gt;Next &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Pre-test Loops:&lt;/SPAN&gt; &amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// no "until" keyword&lt;/SPAN&gt;&lt;BR&gt;while (c &amp;lt; 10) &lt;BR&gt;&amp;nbsp; c++;&lt;BR&gt;&lt;BR&gt;for (c = 2; c &amp;lt;= 10; c += 2) &lt;BR&gt;&amp;nbsp; Console.WriteLine(c);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Post-test Loop:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;do &lt;BR&gt;&amp;nbsp; c++; &lt;BR&gt;while (c &amp;lt; 10);&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;// Array or collection looping&lt;/SPAN&gt;&lt;BR&gt;string[] names = {"Fred", "Sue", "Barney"};&lt;BR&gt;foreach (string s in names)&lt;BR&gt;&amp;nbsp; Console.WriteLine(s);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Breaking out of loops&lt;/SPAN&gt;&lt;BR&gt;int i = 0;&lt;BR&gt;while (true) {&lt;BR&gt;&amp;nbsp; if (i == 5)&lt;BR&gt;&amp;nbsp; &amp;nbsp; break;&lt;BR&gt;&amp;nbsp; i++;&lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Continue to next iteration&lt;/SPAN&gt;&lt;BR&gt;for (i = 0; i &amp;lt; 5; i++) {&lt;BR&gt;&amp;nbsp; if (i &amp;lt; 4)&lt;BR&gt;&amp;nbsp; &amp;nbsp; continue;&lt;BR&gt;&amp;nbsp; Console.WriteLine(i); &amp;nbsp; &lt;SPAN&gt;// Only prints 4&lt;/SPAN&gt;&lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Arrays&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Dim nums() As Integer = {1, 2, 3}&amp;nbsp;&lt;BR&gt;For i As Integer = 0 To nums.Length - 1 &lt;BR&gt;&amp;nbsp; Console.WriteLine(nums(i)) &lt;BR&gt;Next &lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;' 4 is the index of the last element, so it holds 5 elements&lt;/SPAN&gt;&lt;BR&gt;Dim names(4) As String &lt;BR&gt;names(0) = "David"&lt;BR&gt;names(5) = "Bobby"&amp;nbsp; &lt;SPAN&gt;' Throws System.IndexOutOfRangeException&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;' Resize the array, keeping the existing values (Preserve is optional)&lt;/SPAN&gt;&lt;BR&gt;ReDim Preserve names(6)&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT&gt;Dim twoD(rows-1, cols-1) As Single &lt;BR&gt;twoD(2, 0) = 4.5&lt;BR&gt;&lt;BR&gt;Dim jagged()() As Integer = { _ &lt;BR&gt;&amp;nbsp; New Integer(4) {}, New Integer(1) {}, New Integer(2) {} } &lt;BR&gt;jagged(0)(4) = 5 &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;int[] nums = {1, 2, 3};&lt;BR&gt;for (int i = 0; i &amp;lt; nums.Length; i++)&lt;BR&gt;&amp;nbsp; Console.WriteLine(nums[i]);&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;// 5 is the size of the array&lt;/SPAN&gt;&lt;BR&gt;string[] names = new string[5];&lt;BR&gt;names[0] = "David";&lt;BR&gt;names[5] = "Bobby";&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Throws System.IndexOutOfRangeException&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;// C# can't dynamically resize an array.&amp;nbsp; Just copy into new array.&lt;/SPAN&gt;&lt;BR&gt;string[] names2 = new string[7]; &lt;BR&gt;Array.Copy(names, names2, names.Length);&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// or names.CopyTo(names2, 0);&lt;/SPAN&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;float[,] twoD = new float[rows, cols];&lt;BR&gt;twoD[2,0] = 4.5f;&amp;nbsp; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT&gt;int[][] jagged = new int[3][] { &lt;BR&gt;&amp;nbsp; new int[5], new int[2], new int[3] };&lt;BR&gt;jagged[0][4] = 5; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Functions&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Pass by value (in, default), reference (in/out), and&amp;nbsp;reference (out)&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;Sub TestFunc(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)&lt;BR&gt;&amp;nbsp; x += 1&lt;BR&gt;&amp;nbsp; y += 1 &lt;BR&gt;&amp;nbsp; z = 5 &lt;BR&gt;End Sub &lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;FONT&gt;Dim a = 1, b = 1, c As Integer&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;' c&amp;nbsp;set to zero by default&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;TestFunc(a, b, c) &lt;BR&gt;Console.WriteLine("{0} {1} {2}", a, b, c)&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' 1&amp;nbsp;2 5&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Accept variable number of arguments&lt;/SPAN&gt; &lt;BR&gt;Function Sum(ByVal ParamArray nums As Integer()) As Integer &lt;BR&gt;&amp;nbsp; Sum = 0&amp;nbsp; &lt;BR&gt;&amp;nbsp; For Each i As Integer In nums &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sum += i &lt;BR&gt;&amp;nbsp; Next &lt;BR&gt;End Function&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' Or use Return statement like C#&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;Dim total As Integer = Sum(4, 3, 2, 1)&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' returns 10&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Optional parameters must be&amp;nbsp;listed last&amp;nbsp;and must have a default value&lt;/SPAN&gt; &lt;BR&gt;Sub SayHello(ByVal name As String, Optional ByVal prefix As String = "")&lt;BR&gt;&amp;nbsp;&amp;nbsp;Console.WriteLine("Greetings, " &amp;amp; prefix &amp;amp; " " &amp;amp; name) &lt;BR&gt;End Sub&lt;BR&gt;&lt;BR&gt;SayHello("Strangelove", "Dr.")&lt;BR&gt;SayHello("Madonna")&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Pass by value (in, default), reference (in/out), and&amp;nbsp;reference (out)&lt;/SPAN&gt;&lt;BR&gt;void TestFunc(int x, ref int y, out int z) {&lt;BR&gt;&amp;nbsp; x++;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; y++;&lt;BR&gt;&amp;nbsp; z = 5;&lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;int a = 1, b = 1, c;&amp;nbsp; // c doesn't need initializing&lt;BR&gt;TestFunc(a, ref b, out c);&lt;BR&gt;Console.WriteLine("{0} {1} {2}", a, b, c);&amp;nbsp; &lt;SPAN&gt;// 1 2 5&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Accept variable number of arguments&lt;/SPAN&gt;&lt;BR&gt;int Sum(params int[] nums) {&lt;BR&gt;&amp;nbsp; int sum = 0;&lt;BR&gt;&amp;nbsp; foreach (int i in nums)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum += i;&lt;BR&gt;&amp;nbsp; return sum;&lt;BR&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;int total = Sum(4, 3, 2, 1);&amp;nbsp;&amp;nbsp; // returns 10&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;/* C# doesn't&amp;nbsp;support optional arguments/parameters.&amp;nbsp; Just create two different versions of the same function. */&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;void SayHello(string name, string prefix) {&lt;BR&gt;&amp;nbsp; Console.WriteLine("Greetings, " + prefix + " " + name);&lt;BR&gt;}&amp;nbsp;&lt;BR&gt;&lt;BR&gt;void SayHello(string name) { &lt;BR&gt;&amp;nbsp; SayHello(name, ""); &lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Strings&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Special character constants&lt;/SPAN&gt;&lt;BR&gt;vbCrLf, vbCr, vbLf, vbNewLine &lt;BR&gt;vbNullString &lt;BR&gt;vbTab &lt;BR&gt;vbBack &lt;BR&gt;vbFormFeed &lt;BR&gt;vbVerticalTab&lt;BR&gt;"" &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' String concatenation (use &amp;amp; or +)&lt;/SPAN&gt; &lt;BR&gt;Dim school As String = "Harding" &amp;amp; vbTab&lt;BR&gt;school = school &amp;amp; "University" &lt;SPAN&gt;' school is "Harding (tab) University"&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Chars&lt;/SPAN&gt;&lt;BR&gt;Dim letter As Char = school.Chars(0)&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' letter is H &lt;/SPAN&gt;&lt;BR&gt;letter = Convert.ToChar(65)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;' letter is A &lt;/SPAN&gt;&lt;BR&gt;letter = Chr(65)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' same thing &lt;BR&gt;&lt;/SPAN&gt;Dim word() As Char = school.ToCharArray() &lt;SPAN&gt;' word holds Harding &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' No string literal operator&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;Dim msg As String = "File is c:\temp\x.dat"&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' String comparison&lt;/SPAN&gt;&lt;BR&gt;Dim mascot As String = "Bisons"&lt;BR&gt;If (mascot = "Bisons") Then&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;' true&lt;/SPAN&gt;&lt;BR&gt;If (mascot.Equals("Bisons")) Then&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' true&lt;/SPAN&gt;&lt;BR&gt;If (mascot.ToUpper().Equals("BISONS"))&amp;nbsp;Then &amp;nbsp;&lt;SPAN&gt;' true&lt;/SPAN&gt;&lt;BR&gt;If (mascot.CompareTo("Bisons") = 0) Then&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;' true&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Console.WriteLine(mascot.Substring(2, 3)) &lt;SPAN&gt;' Prints "son"&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' String matching&lt;/SPAN&gt;&lt;BR&gt;If ("John 3:16" Like "Jo[Hh]? #:*") Then &amp;nbsp; &lt;SPAN&gt;'true&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;Imports System.Text.RegularExpressions &amp;nbsp; &lt;SPAN&gt;' More powerful than Like&lt;/SPAN&gt;&lt;BR&gt;Dim r As New Regex("Jo[hH]. \d:*")&lt;BR&gt;If (r.Match("John 3:16").Success) Then &amp;nbsp; &lt;SPAN&gt;'true&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' My birthday: Oct 12, 1973&lt;/SPAN&gt;&lt;BR&gt;Dim dt As New DateTime(1973, 10, 12)&lt;BR&gt;Dim s As String = "My birthday: " &amp;amp; dt.ToString("MMM dd, yyyy") &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Mutable string &lt;BR&gt;&lt;/SPAN&gt;Dim buffer As New System.Text.StringBuilder("two ")&lt;BR&gt;buffer.Append("three ")&lt;BR&gt;buffer.Insert(0, "one ")&lt;BR&gt;buffer.Replace("two", "TWO")&lt;BR&gt;Console.WriteLine(buffer)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' Prints "one TWO three"&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Escape sequences&lt;/SPAN&gt;&lt;BR&gt;\n, \r&lt;BR&gt;\t&lt;BR&gt;\\&lt;BR&gt;\" &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// String concatenation&lt;/SPAN&gt;&lt;BR&gt;string school = "Harding\t"; &lt;BR&gt;school = school + "University";&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// school is "Harding (tab) University"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Chars&lt;/SPAN&gt;&lt;BR&gt;char letter = school[0];&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// letter is H&lt;/SPAN&gt; &lt;BR&gt;letter = Convert.ToChar(65); &amp;nbsp; &amp;nbsp; &lt;SPAN&gt;// letter is A&lt;/SPAN&gt; &lt;BR&gt;letter = (char)65;&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;/FONT&gt;&lt;/FONT&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// same thing &lt;BR&gt;&lt;/SPAN&gt;char[] word = school.ToCharArray();&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// word holds Harding&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// String literal&lt;/SPAN&gt; &lt;BR&gt;string msg = @"File is c:\temp\x.dat"; &lt;BR&gt;&lt;SPAN&gt;// same as&lt;/SPAN&gt; &lt;BR&gt;string msg = "File is c:\\temp\\x.dat"; &lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// String comparison&lt;/SPAN&gt;&lt;BR&gt;string&amp;nbsp;mascot = "Bisons"; &lt;BR&gt;if (mascot == "Bisons")&amp;nbsp; &amp;nbsp; &lt;SPAN&gt;// true&lt;/SPAN&gt;&lt;BR&gt;if (mascot.Equals("Bisons"))&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;// true&lt;/SPAN&gt;&lt;BR&gt;if (mascot.ToUpper().Equals("BISONS"))&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// true&lt;/SPAN&gt;&lt;BR&gt;if (mascot.CompareTo("Bisons") == 0)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// true&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;Console.WriteLine(mascot.Substring(2, 3));&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Prints "son"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// String matching&lt;BR&gt;// No Like equivalent - use regular expressions&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;using System.Text.RegularExpressions;&lt;BR&gt;Regex r = new Regex(@"Jo[hH]. \d:*");&lt;BR&gt;if (r.Match("John 3:16").Success) &amp;nbsp; &lt;SPAN&gt;// true&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// My birthday: Oct 12, 1973&lt;/SPAN&gt;&lt;BR&gt;DateTime dt = new DateTime(1973, 10, 12);&lt;BR&gt;string s = "My birthday: " + dt.ToString("MMM dd, yyyy"); &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Mutable string&lt;/SPAN&gt; &lt;BR&gt;System.Text.StringBuilder buffer = new System.Text.StringBuilder("two "); &lt;BR&gt;buffer.Append("three "); &lt;BR&gt;buffer.Insert(0, "one "); &lt;BR&gt;buffer.Replace("two", "TWO"); &lt;BR&gt;Console.WriteLine(buffer);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Prints "one TWO three"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Exception Handling&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Throw an exception&lt;/SPAN&gt;&lt;BR&gt;Dim ex As New Exception("Something is really wrong.") &lt;BR&gt;Throw &amp;nbsp;ex&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Catch an exception&lt;/SPAN&gt;&lt;BR&gt;Try&amp;nbsp;&lt;BR&gt;&amp;nbsp; y = 0&lt;BR&gt;&amp;nbsp; x = 10 / y&lt;BR&gt;Catch ex As Exception&amp;nbsp;When y = 0 &lt;SPAN&gt;' Argument and When is optional&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp; Console.WriteLine(ex.Message) &lt;BR&gt;Finally &lt;BR&gt;&amp;nbsp; Beep() &lt;BR&gt;End Try&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Deprecated unstructured error handling&lt;/SPAN&gt;&lt;BR&gt;On Error GoTo MyErrorHandler&lt;BR&gt;...&lt;BR&gt;MyErrorHandler: Console.WriteLine(Err.Description)&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Throw an exception&lt;/SPAN&gt;&lt;BR&gt;Exception up = new Exception("Something is really wrong."); &lt;BR&gt;throw up;&amp;nbsp; &lt;SPAN&gt;// ha ha &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Catch an exception&lt;/SPAN&gt;&lt;BR&gt;try {&amp;nbsp;&lt;BR&gt;&amp;nbsp; y = 0; &lt;BR&gt;&amp;nbsp; x = 10 / y; &lt;BR&gt;} &lt;BR&gt;catch (Exception ex) {&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Argument is optional, no "When" keyword&lt;/SPAN&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; Console.WriteLine(ex.Message); &lt;BR&gt;} &lt;BR&gt;finally { &lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Requires reference to the Microsoft.VisualBasic.dll &lt;BR&gt;&amp;nbsp; // assembly (pre .NET Framework v2.0)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp; Microsoft.VisualBasic.Interaction.Beep(); &lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Namespaces&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Namespace Harding.Compsci.Graphics&amp;nbsp;&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;End Namespace&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;' or&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Namespace Harding &lt;BR&gt;&amp;nbsp; Namespace Compsci &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Namespace Graphics&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Namespace &lt;BR&gt;&amp;nbsp; End Namespace &lt;BR&gt;End Namespace&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Imports Harding.Compsci.Graphics &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;namespace Harding.Compsci.Graphics {&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;} &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// or&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;namespace Harding {&lt;BR&gt;&amp;nbsp; namespace Compsci {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; namespace Graphics {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;using Harding.Compsci.Graphics; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Classes / Interfaces&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Accessibility keywords&lt;/SPAN&gt; &lt;BR&gt;Public&lt;BR&gt;Private&lt;BR&gt;Friend&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;BR&gt;Protected&lt;BR&gt;Protected Friend&lt;BR&gt;Shared&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Inheritance&lt;/SPAN&gt;&lt;BR&gt;Class&amp;nbsp;FootballGame&lt;BR&gt;&amp;nbsp; Inherits&amp;nbsp;Competition&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;End Class&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Interface definition&lt;/SPAN&gt;&lt;BR&gt;Interface IAlarmClock&amp;nbsp;&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;End Interface&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Extending an interface&amp;nbsp;&lt;/SPAN&gt;&lt;BR&gt;Interface IAlarmClock &lt;BR&gt;&amp;nbsp; Inherits IClock&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;End Interface&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Interface implementation&lt;/SPAN&gt;&lt;BR&gt;Class WristWatch&amp;nbsp;&lt;BR&gt;&amp;nbsp; Implements IAlarmClock, ITimer&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; ...&lt;BR&gt;End Class&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;Accessibility keywords&lt;/SPAN&gt; &lt;BR&gt;public&lt;BR&gt;private&lt;BR&gt;internal&lt;BR&gt;protected&lt;BR&gt;protected internal&lt;BR&gt;static&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Inheritance&lt;/SPAN&gt;&lt;BR&gt;class&amp;nbsp;FootballGame : Competition {&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;FONT&gt;// Interface definition&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;FONT&gt;interface IAlarmClock {&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;} &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Extending an interface&amp;nbsp;&lt;/SPAN&gt;&lt;BR&gt;interface IAlarmClock : IClock {&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;FONT&gt;// Interface implementation&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;FONT&gt;class WristWatch : IAlarmClock, ITimer {&lt;BR&gt;&amp;nbsp;&amp;nbsp; ...&lt;BR&gt;} &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Constructors / Destructors&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;Class SuperHero&lt;BR&gt;&amp;nbsp; Private&amp;nbsp;_powerLevel As Integer &lt;BR&gt;&lt;BR&gt;&amp;nbsp; Public Sub New() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _powerLevel = 0 &lt;BR&gt;&amp;nbsp; End Sub &lt;BR&gt;&lt;BR&gt;&amp;nbsp; Public Sub New(ByVal powerLevel As Integer) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me._powerLevel = powerLevel &lt;BR&gt;&amp;nbsp; End Sub&lt;BR&gt;&lt;BR&gt;&amp;nbsp; Protected Overrides Sub Finalize()&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;' Desctructor code to free unmanaged resources&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyBase.Finalize() &lt;BR&gt;&amp;nbsp; End Sub&lt;BR&gt;End Class &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;class SuperHero {&lt;BR&gt;&amp;nbsp; private int _powerLevel;&lt;BR&gt;&lt;BR&gt;&amp;nbsp; public SuperHero() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_powerLevel = 0;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp; public SuperHero(int powerLevel) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._powerLevel= powerLevel;&amp;nbsp;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp; ~SuperHero() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Destructor code to free unmanaged resources.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Implicitly creates a Finalize method&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Using Objects&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Dim hero As SuperHero = New SuperHero&lt;BR&gt;&lt;SPAN&gt;' or&lt;/SPAN&gt;&lt;BR&gt;Dim hero As New SuperHero &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;With hero &lt;BR&gt;&amp;nbsp; .Name = "SpamMan" &lt;BR&gt;&amp;nbsp; .PowerLevel = 3 &lt;BR&gt;End With &lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;hero.Defend("Laura Jones") &lt;BR&gt;hero.Rest()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' Calling Shared method&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN&gt;' or&lt;/SPAN&gt;&lt;BR&gt;SuperHero.Rest() &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;Dim hero2 As SuperHero = hero&amp;nbsp; &lt;SPAN&gt;' Both reference the same object&lt;/SPAN&gt; &lt;BR&gt;hero2.Name = "WormWoman" &lt;BR&gt;Console.WriteLine(hero.Name)&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' Prints WormWoman&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;hero = Nothing &amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' Free the object&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;If hero Is Nothing Then _ &lt;BR&gt;&amp;nbsp; hero = New SuperHero&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Dim obj As Object = New SuperHero &lt;BR&gt;If TypeOf obj Is SuperHero Then _&lt;BR&gt;&amp;nbsp; Console.WriteLine("Is a SuperHero object.") &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Mark object for quick disposal&lt;/SPAN&gt;&lt;BR&gt;Using reader As StreamReader = File.OpenText("test.txt")&lt;BR&gt;&amp;nbsp; Dim line As String = reader.ReadLine()&lt;BR&gt;&amp;nbsp; While Not line Is Nothing&lt;BR&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine(line)&lt;BR&gt;&amp;nbsp; &amp;nbsp; line = reader.ReadLine()&lt;BR&gt;&amp;nbsp; End While&lt;BR&gt;End Using &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;SuperHero hero = new SuperHero(); &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// No "With" construct&lt;/SPAN&gt;&lt;BR&gt;hero.Name = "SpamMan"; &lt;BR&gt;hero.PowerLevel = 3; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;hero.Defend("Laura Jones");&lt;BR&gt;SuperHero.Rest();&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Calling static method&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT&gt;SuperHero hero2 = hero;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Both reference the same object&lt;/SPAN&gt; &lt;BR&gt;hero2.Name = "WormWoman"; &lt;BR&gt;Console.WriteLine(hero.Name);&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Prints WormWoman&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;hero = null ;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Free the object&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;if (hero == null)&lt;BR&gt;&amp;nbsp; hero = new SuperHero();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Object obj = new SuperHero();&amp;nbsp;&lt;BR&gt;if (obj is SuperHero) &lt;BR&gt;&amp;nbsp; Console.WriteLine("Is a SuperHero object."); &lt;/FONT&gt;&lt;/P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Mark object for quick disposal&lt;/SPAN&gt;&lt;BR&gt;using (StreamReader reader = File.OpenText("test.txt")) {&lt;BR&gt;&amp;nbsp; string line;&lt;BR&gt;&amp;nbsp; while ((line = reader.ReadLine()) != null)&lt;BR&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine(line);&lt;BR&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Structs&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Structure StudentRecord &lt;BR&gt;&amp;nbsp; Public name As String &lt;BR&gt;&amp;nbsp; Public gpa As Single &lt;BR&gt;&lt;BR&gt;&amp;nbsp; Public Sub New(ByVal name As String, ByVal gpa As Single) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.name = name &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.gpa = gpa &lt;BR&gt;&amp;nbsp; End Sub &lt;BR&gt;End Structure&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;Dim stu As StudentRecord = New StudentRecord("Bob", 3.5) &lt;BR&gt;Dim stu2 As StudentRecord = stu&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;stu2.name = "Sue" &lt;BR&gt;Console.WriteLine(stu.name)&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN&gt;' Prints Bob&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(stu2.name) &amp;nbsp;&lt;SPAN&gt;' Prints Sue&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;struct StudentRecord {&lt;BR&gt;&amp;nbsp; public string name;&lt;BR&gt;&amp;nbsp; public float gpa;&lt;BR&gt;&lt;BR&gt;&amp;nbsp; public StudentRecord(string name, float gpa) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.name = name;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.gpa = gpa;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;StudentRecord stu = new StudentRecord("Bob", 3.5f);&lt;BR&gt;StudentRecord stu2 = stu;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;stu2.name = "Sue";&lt;BR&gt;Console.WriteLine(stu.name);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Prints Bob&lt;/SPAN&gt;&lt;BR&gt;Console.WriteLine(stu2.name);&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Prints Sue&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Properties&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Private _size As Integer&lt;BR&gt;&lt;BR&gt;Public Property Size() As Integer&lt;BR&gt;&amp;nbsp; Get &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Return _size &lt;BR&gt;&amp;nbsp; End Get &lt;BR&gt;&amp;nbsp; Set (ByVal Value As Integer) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Value &amp;lt; 0 Then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _size = 0 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _size = Value &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;BR&gt;&amp;nbsp; End Set &lt;BR&gt;End Property&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;foo.Size += 1&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;private int _size;&lt;BR&gt;&lt;BR&gt;public int Size { &lt;BR&gt;&amp;nbsp; get { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _size; &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;&amp;nbsp; set { &lt;BR&gt;&amp;nbsp; &amp;nbsp; if (value &amp;lt; 0) &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; _size = 0; &lt;BR&gt;&amp;nbsp; &amp;nbsp; else &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; _size = value; &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT&gt;foo.Size++; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Delegates / Events&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Delegate Sub MsgArrivedEventHandler(ByVal message As String)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Event MsgArrivedEvent As MsgArrivedEventHandler&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' or to define an event which declares a delegate implicitly&lt;/SPAN&gt;&lt;BR&gt;Event MsgArrivedEvent(ByVal message As String) &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;AddHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback &lt;BR&gt;&lt;/FONT&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Won't throw an exception if obj is Nothing&lt;BR&gt;&lt;/SPAN&gt;RaiseEvent MsgArrivedEvent("Test message") &lt;BR&gt;RemoveHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Imports System.Windows.Forms&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Dim WithEvents MyButton As Button&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' WithEvents can't be used on local variable&lt;/SPAN&gt;&lt;BR&gt;MyButton = New Button&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Private Sub MyButton_Click(ByVal sender As System.Object, _&lt;BR&gt;&amp;nbsp; ByVal e As System.EventArgs) Handles MyButton.Click &lt;BR&gt;&amp;nbsp; MessageBox.Show(Me, "Button was clicked", "Info", _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBoxButtons.OK, MessageBoxIcon.Information) &lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;delegate void MsgArrivedEventHandler(string message); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;event MsgArrivedEventHandler MsgArrivedEvent;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Delegates must be used with events in C#&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;MsgArrivedEvent += new MsgArrivedEventHandler(My_MsgArrivedEventCallback);&lt;BR&gt;MsgArrivedEvent("Test message");&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Throws exception if obj is null&lt;/SPAN&gt;&lt;BR&gt;MsgArrivedEvent -= new MsgArrivedEventHandler(My_MsgArrivedEventCallback);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT&gt;using System.Windows.Forms;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Button MyButton = new Button();&amp;nbsp;&lt;BR&gt;MyButton.Click += new System.EventHandler(MyButton_Click);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;private void MyButton_Click(object sender, System.EventArgs e) { &lt;BR&gt;&amp;nbsp; MessageBox.Show(this, "Button was clicked", "Info", &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBoxButtons.OK, MessageBoxIcon.Information); &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;Console I/O&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Console.Write("What's your name? ") &lt;BR&gt;Dim name As String = Console.ReadLine() &lt;BR&gt;Console.Write("How old are you? ") &lt;BR&gt;Dim age As Integer = Val(Console.ReadLine()) &lt;BR&gt;Console.WriteLine("{0} is {1} years old.", name, age)&amp;nbsp; &lt;BR&gt;&lt;SPAN&gt;' or&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(name &amp;amp; " is " &amp;amp; age &amp;amp; " years old.") &lt;BR&gt;&lt;BR&gt;Dim c As Integer &lt;BR&gt;c = Console.Read() &amp;nbsp;&amp;nbsp; &lt;SPAN&gt;'&amp;nbsp;Read single char&lt;/SPAN&gt; &lt;BR&gt;Console.WriteLine(c)&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;' Prints 65 if user enters "A"&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Console.Write("What's your name? ");&lt;BR&gt;string name = Console.ReadLine();&lt;BR&gt;Console.Write("How old are you? ");&lt;BR&gt;int age = Convert.ToInt32(Console.ReadLine());&lt;BR&gt;Console.WriteLine("{0} is {1} years old.", name, age);&lt;BR&gt;&lt;SPAN&gt;// or&lt;/SPAN&gt;&lt;BR&gt;Console.WriteLine(name + " is " + age + " years old."); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT&gt;&lt;FONT&gt;int c = Console.Read();&amp;nbsp; &lt;SPAN&gt;// Read single char&lt;/SPAN&gt;&lt;BR&gt;Console.WriteLine(c);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN&gt;// Prints 65 if user enters "A"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;FONT&gt;VB.NET&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A&gt;&lt;/A&gt;&lt;FONT&gt;File I/O&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT&gt;C#&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;Imports System.IO&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Write out to text file&lt;/SPAN&gt;&lt;BR&gt;Dim writer As StreamWriter = File.CreateText("c:\myfile.txt") &lt;BR&gt;writer.WriteLine("Out to file.") &lt;BR&gt;writer.Close() &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Read all lines from text file&lt;/SPAN&gt;&lt;BR&gt;Dim reader As StreamReader = File.OpenText("c:\myfile.txt") &lt;BR&gt;Dim line As String = reader.ReadLine() &lt;BR&gt;While Not line Is Nothing &lt;BR&gt;&amp;nbsp; Console.WriteLine(line) &lt;BR&gt;&amp;nbsp; line = reader.ReadLine() &lt;BR&gt;End While &lt;BR&gt;reader.Close() &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Write out to binary file&lt;/SPAN&gt;&lt;BR&gt;Dim str As String = "Text data" &lt;BR&gt;Dim num As Integer = 123 &lt;BR&gt;Dim binWriter As New BinaryWriter(File.OpenWrite("c:\myfile.dat"))&amp;nbsp; &lt;BR&gt;binWriter.Write(str)&amp;nbsp; &lt;BR&gt;binWriter.Write(num)&amp;nbsp;&lt;BR&gt;binWriter.Close()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;' Read from binary file&lt;/SPAN&gt;&lt;BR&gt;Dim binReader As New BinaryReader(File.OpenRead("c:\myfile.dat")) &lt;BR&gt;str = binReader.ReadString() &lt;BR&gt;num = binReader.ReadInt32() &lt;BR&gt;binReader.Close()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT&gt;using System.IO;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Write out to text file&lt;/SPAN&gt;&lt;BR&gt;StreamWriter writer = File.CreateText("c:\\myfile.txt"); &lt;BR&gt;writer.WriteLine("Out to file."); &lt;BR&gt;writer.Close(); &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Read all lines from text file&lt;/SPAN&gt;&lt;BR&gt;StreamReader reader = File.OpenText("c:\\myfile.txt"); &lt;BR&gt;string line = reader.ReadLine(); &lt;BR&gt;while (line != null) {&lt;BR&gt;&amp;nbsp; Console.WriteLine(line); &lt;BR&gt;&amp;nbsp; line = reader.ReadLine(); &lt;BR&gt;} &lt;BR&gt;reader.Close(); &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Write out to binary file&lt;/SPAN&gt;&lt;BR&gt;string str = "Text data"; &lt;BR&gt;int num = 123; &lt;BR&gt;BinaryWriter binWriter = new BinaryWriter(File.OpenWrite("c:\\myfile.dat")); &lt;BR&gt;binWriter.Write(str); &lt;BR&gt;binWriter.Write(num); &lt;BR&gt;binWriter.Close(); &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT&gt;&lt;SPAN&gt;// Read from binary file&lt;/SPAN&gt;&lt;BR&gt;BinaryReader binReader = new BinaryReader(File.OpenRead("c:\\myfile.dat")); &lt;BR&gt;str = binReader.ReadString(); &lt;BR&gt;num = binReader.ReadInt32(); &lt;BR&gt;binReader.Close();&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;From Frank McCowan's page at &lt;/FONT&gt;&lt;a href="http://www.dotnetjunkies.com/WebLog/admin/blogs/www.harding.edu/USER"&gt;&lt;A href="http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html"&gt;&lt;FONT&gt;http://www.harding.edu/USER&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;/fmccown/WWW/vbnet_csharp_comparison.html&lt;/A&gt;&amp;nbsp;, I'm doing a refresher on the lanaguage constructs and differences between C# and VB.Net: &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creativecommons.org/licenses/by-sa/2.0/"&gt;&lt;IMG alt="Creative Commons License" src="http://creativecommons.org/images/public/somerights20.gif"&gt;&lt;/A&gt;&lt;BR&gt;This work is licensed under a &lt;A href="http://creativecommons.org/licenses/by-sa/2.0/"&gt;Creative Commons License&lt;/A&gt;. &lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=140402" width="1" height="1"&gt;</description></item><item><title>Book Review: Applying UML and Patterns by Craig Larman</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/06/05/139857.aspx</link><pubDate>Tue, 06 Jun 2006 03:40:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:139857</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>1</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/139857.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=139857</wfw:commentRss><description>&lt;P&gt;&lt;SPAN&gt;I picked this book up several years ago while writing curriculum for a training class on OOAD and UML.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;My reason for seeking it was that I needed an alternative to several of the books that Rational published, including &lt;U&gt;UML Distilled&lt;/U&gt; and &lt;U&gt;The Unified Modeling Language User Guide&lt;/U&gt;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The later two texts just did not tie UML, process and practical examples together and Larman's book did.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;What appealed to me about "Applying UML and Patterns", is that it combined both theory and practice in manifold ways.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve critiqued each of the following areas:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Software Development Life Cycle&lt;/SPAN&gt; &lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;UML&lt;/SPAN&gt; &lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;Patterns&lt;/SPAN&gt; &lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;Practical Case Study and Examples&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;Software Development Life Cycle - From project Inception through Elaboration, even one new to the Unified Process will know exactly where the sample project is within the software development life cycle. In addition, the book gives the reader both a good intro to the Agile UP and substantiates why UP driven projects have higher success rates than those using the waterfall process.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It sites the MIT Sloan Management Review of Successful Projects (http://smr.mit.edu) to build the case.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;UML and other Artifacts - The book does an outstanding job of giving solid examples of applying UML notation and creating Use Cases.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;From writing effective use cases, to creating and refining a domain object model, to applying several popular patterns, you'll be glued each chapter. The inside and back cover provide useful aides for quick reference to the UP, several of Larman's patterns and UML notation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Patterns - I think the book's value in showing how patterns compliment the design process speaks for itself. Those introduced, such as Larman's "Information Expert", "Creator" and "Controller" are part of his GRASP series. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Practical Case Study and Examples - The book intertwines UML, UP and a realistic case project called the “NextGEN point of sale system” in a real, practical way. Often, I've loaned this book to colleagues and client managers, both for their edification and at times to persuade them on a finer point of RUP, Agile and UP based process.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It has also proved to be a good reference by providing RUP objectives and UML artifacts at key points in the SDLC.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Overall, the book makes for good reading for developers and team leads alike. I recommend it as a baseline prior to choosing a UP based methodology and for those wanting to understand the big picture and how Use Case, UML, Patterns and UP can compliment on another.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;It would be great to see a book as quality as this written using .Net specific tools, such as Visio UML and C#.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If you are interested, please see &lt;A href="http://www.craiglarman.com/"&gt;&lt;U&gt;www.craiglarman.com&lt;/U&gt;&lt;/A&gt; for more details and sample chapter from the book.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=139857" width="1" height="1"&gt;</description></item><item><title>Application Error Handling in ASP.Net</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2006/06/05/139856.aspx</link><pubDate>Tue, 06 Jun 2006 03:37:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:139856</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>1</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/139856.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=139856</wfw:commentRss><description>&lt;P&gt;&lt;SPAN&gt;In trying to standardize Application Error Handling, my group has come up with the following guidelines.&amp;nbsp;Feel free to pick it apart and provide your comments back to me.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Each application should implement error handling in the following order :&lt;BR&gt;1.&amp;nbsp;Try-Catch - Use of Structured Exception Handling blocks&lt;BR&gt;2.&amp;nbsp;Use of Page Level Error Events&lt;BR&gt;3.&amp;nbsp;Application Wide Error Pages&lt;BR&gt;4.&amp;nbsp;Exceptions shall be logged&lt;BR&gt;5.&amp;nbsp;Using and Enabling Trace&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Every effort should be made by the developer to provide structured exception handling blocks to circumvent un-handled exceptions.&amp;nbsp; Therefore, Page Level and Application Wide error trapping should be used to augment SEH, but not circumvent it.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Structured Exception Handling Blocks:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The use of Try...Catch...Finally Statements will be used as a first attempt to trap and correct application errors.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Try…Catch…Finally statements should be placed around related blocks of code at a granularity that facilitates catching and correcting errors with minimal impact to the end user.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The following general form shall be used:&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[ tryStatements ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;[ Catch [ exception [ As type ] ]&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[ catchStatements ] ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;[ Exit Try ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;[ Finally&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[ finallyStatement ] ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;End Try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Page Level Error Events:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&lt;BR&gt;The Page object’s ErrorPage attribute shall be used display a specific page when an unhandled exception occurs on a Web form. The page-level setting supersedes the application-level settings in the Web.config file.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;For example, the following HTML sets the ErrorPage attribute for a Web form:&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;                                        Inherits="MCSDWebAppsVB.ErrorPages" errorPage="ErrDefault.aspx"%&gt;When the exception occurs, the user is redirected to designated error page (i.e.ErrDefault.aspx). Because the error page is displayed through redirection, the context for the error is lost and Server.GetLastError returns nothing from the target error page.&amp;nbsp; Therefore, Server.GetLastError shall be called in the Page_Error event and the result placed in a Session variable.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Application Wide Error Pages:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&lt;BR&gt;Application Wide Error Pages shall be used to provide user friendly responses for errors not caught in a structured event handling block.&amp;nbsp; The customErrors section of the web.config file shall be set to specify a default error page to display, along with other required error pages for specific HTTP response codes that indicate errors. &lt;BR&gt;For example:&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;o&amp;nbsp;The customErrors mode attribute must equal On to view the error pages while debugging the application on your local machine. &lt;BR&gt;o&amp;nbsp;Setting the mode to RemoteOnly (the default) will display the designated error pages when the application is accessed from client computers, but not when the application is accessed locally.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Logging Exceptions:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&lt;BR&gt;Any exceptions that meet the following criteria should be logged:&lt;BR&gt;o&amp;nbsp;Those considered serious in that they could result in data loss or corruption&lt;BR&gt;o&amp;nbsp;Those that need to be monitored for application:&lt;BR&gt;o&amp;nbsp;Security&lt;BR&gt;o&amp;nbsp;Performance&lt;BR&gt;o&amp;nbsp;Functional Compliance&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Using the System.Diagnostics namespace, exceptions shall be logged either to the Server “Application” or Log.&amp;nbsp;&amp;nbsp; The following approach, should be used:&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;Dim eventLog1 As New EventLog()&lt;BR&gt;&amp;nbsp;If Not eventLog1.SourceExists("") Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eventLog1.CreateEventSource("", "&amp;lt; ApplicationName&amp;gt;")&lt;BR&gt;&amp;nbsp;End If&lt;BR&gt;&amp;nbsp;eventLog1.Source = "(")&lt;BR&gt;&amp;nbsp;eventLog1.WriteEntry("", ex.ToString(), _&lt;BR&gt;&amp;nbsp;EventLogEntryType.Error)&lt;BR&gt;&amp;nbsp;eventLog1 =&amp;nbsp; Nothing&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Using and Enabling Trace:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&lt;BR&gt;Tracing is an integral and useful part of application development within the .Net Framework while debugging, testing and even at times, in production. The following convention will ensure that it is used properly in each SDLC phase.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;During Development:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&lt;BR&gt;It shall be the developer’s responsibility to use the Shared (static) methods of the Trace Class, which is part of System.Diagnostics namespace:&lt;BR&gt;o&amp;nbsp;Write - Writes to Listeners collection&lt;BR&gt;o&amp;nbsp;WriteLine - Same as Write except adds a CR to the end&lt;BR&gt;o&amp;nbsp;WriteIf - Writes conditionally &lt;BR&gt;o&amp;nbsp;WriteLineIf - Same as WriteIf except adds a CR to the end&lt;BR&gt;o&amp;nbsp;Assert - Writes to listeners collection if expression is False and displays a message box&lt;BR&gt;o&amp;nbsp;Fail - Same as Assert except condition automatically fails without testing&lt;BR&gt;o&amp;nbsp;Trace levels shall be used so that the granularity of trace information can be controlled.&lt;BR&gt;o&amp;nbsp;Output shall be sent to the appropriate Listeners collection. If the TextWriterTraceListener is used, care shall be taken to ensure the log file is created new each session, so that it does not become excessively large.&lt;BR&gt;o&amp;nbsp;The Trace class shall be used over the Debug class.&amp;nbsp; Since the only difference between Trace and Debug is that Debug statements are not included in Release version, the Trace class shall be used over the Debug class.&amp;nbsp; This will ensure tracing can be enabled in production.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;During System Test and Production:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&lt;BR&gt;For security reasons, it shall be the developer’s and admin’s responsibility to ensure that tracing is disabled when an active debug session in not in process.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;As tracing can be turned controlled for an entire Web application or for an individual page in the application and the following standard ASP.Net conventions should be used:&lt;BR&gt;o&amp;nbsp;In order to access the Trace.axd page, turn tracing on for an entire application in the application’s Web.config file, set the element’s Enabled attribute to True.&lt;BR&gt;o&amp;nbsp;Other Trace Attributes should be responsibly managed by the developer and team as illustrated:&lt;BR&gt;&lt;BR&gt;o&amp;nbsp;where pageOutput="false" writes to the Trace.axd log file, else it will to screen.&lt;BR&gt;o&amp;nbsp;requestLimit="N“ so the only the first N requests go to Trace.axd.&lt;BR&gt;o&amp;nbsp;localOnly="true“ should be used to ensure that trace is only viewed by the local IIS developer or admin, but not remotely by the user community.&lt;BR&gt;o&amp;nbsp;To configure trace level in web.config set the relevant via XML Key/Value Pairs. For example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Single Page Tracing shall be used judiciously during production. If need, to turn tracing on for a single page, the DOCUMENT object’s Trace property can be set to True in the Visual Studio .NET Properties window. This sets the @ Page directive’s Trace attribute to True in the Web form’s HTML.&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;***&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=139856" width="1" height="1"&gt;</description></item><item><title>ASP.NET: Best Practices and Techniques for Building Secure ASP.NET Applications</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2004/02/05/6629.aspx</link><pubDate>Thu, 05 Feb 2004 11:29:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:6629</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>1</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/6629.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=6629</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma&gt;Folks: I just signed up to attend a MSDN session on &lt;SPAN&gt;ASP.NET: Best Practices and Techniques for Building Secure ASP.NET Applications to held next week in my area.&amp;nbsp; Has anyone attended? And if so, is it worth the while.&amp;nbsp; For example, how much it tech content vs. high level, marketing?&amp;nbsp; Advise.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;See &lt;/FONT&gt;&lt;A href="http://launch3.popgram.com/Launch.aspx?BID=1802728236&amp;amp;bhcp=1"&gt;&lt;FONT face=Tahoma&gt;http://launch3.popgram.com/Launch.aspx?BID=1802728236&amp;amp;bhcp=1&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;for more detials.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=6629" width="1" height="1"&gt;</description></item><item><title>RFI: C# and VB.Net Code Standards and related SLDC guidelines</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2004/02/03/6496.aspx</link><pubDate>Tue, 03 Feb 2004 15:55:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:6496</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/6496.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=6496</wfw:commentRss><description>&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;Folks: &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;It's been on my list for while, to solicit a request for information for any known groups that are currently collaborating and publishing a concise set of code and peer review standards use with .Net CLS languages.&amp;nbsp; I'm contemplating starting an initiative in this direction.&amp;nbsp; Perhaps a better use of my effort would be to join one that already has some momentum and direction.&amp;nbsp; Please reply back for any advice or knowledge of current efforts in the industry.&amp;nbsp; Thanks and Best Regards to all. Fletcher Dunton&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=6496" width="1" height="1"&gt;</description></item><item><title>"IIS Not Running ASP.Net 1.1"</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2004/01/14/5586.aspx</link><pubDate>Wed, 14 Jan 2004 10:35:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:5586</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/5586.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=5586</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Folks:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Recently,&amp;nbsp;&amp;nbsp;a student of mine installed VS.Net 2003 on their XP Pro box, then eagerly started developing a new ASP.Net web app and received the message:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&amp;nbsp;"Visual Studio .Net has detected that the specified Web Server is not Running ASP.Net 1.1&amp;#8221;.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Initially, I questioned how that could happen, since VS.Net 2003 comes with the 1.1 framework.&amp;nbsp; Then after some investigation (but without rebuilding &lt;EM&gt;my&lt;/EM&gt; PC to verify this) I've come up with the following scenario that might make cause the problem:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;OL type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;I developer installed XP Pro (or Server 2003) and does not explicitly set the IIS option at install time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt; 
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;They then install VS.Net 2003, which installs the 1.1 framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt; 
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;They try to create a ASP.Net web app and receive a nasty gram to the effect &amp;#8220;http :Internal Server error, server not found&amp;#8220;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Realizing that IIS is not on there PC, they pull the OS install disk out and run setup, installing&amp;nbsp; the web server.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;This installs the 1.0 framework on the box, but does not configure the web server and ASP.net for side by side execution of the framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Luckily, there's a fix:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana size=2&gt;If this has happened to you, you may need to run aspnet_regiis with the -r option to replace the current version of IIS and script maps.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana size=2&gt;If this has happened to you and you DON'T need side by side execution of the framework., please download the 1.1 framework follow the instruction documented at : &lt;/FONT&gt;&lt;A href="http://www.asp.net/download-1.1.aspx?tabindex=0&amp;amp;tabid=1"&gt;&lt;FONT face=Verdana size=2&gt;http://www.asp.net/download-1.1.aspx?tabindex=0&amp;amp;tabid=1&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Verdana size=2&gt;If this has happened to you and you need side by side execution of the framework., please see: &lt;/FONT&gt;&lt;A href="http://www.asp.net/faq/SideBySide.aspx"&gt;&lt;FONT face=Verdana size=2&gt;http://www.asp.net/faq/SideBySide.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I welcome your feedback...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=5586" width="1" height="1"&gt;</description></item><item><title>Series:Axioms for Good IT Process</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2004/01/13/5542.aspx</link><pubDate>Tue, 13 Jan 2004 12:24:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:5542</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/5542.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=5542</wfw:commentRss><description>&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;I was recently asked by a client to help them evaluate their current IT process. As I browsed their existing  policy, project notebooks and other artifacts I came to realize just how deceived and misinformed (these) folks were about what &amp;#8220;good IT process&amp;#8220; is and is not.  &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;In fact, some of the comments I received back from both management and developers ranged from &amp;#8220;I just hate (any) process&amp;#8221; to &amp;#8220;Should I go to CMM training?&amp;#8221; &lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;(I just love that one) and &amp;#8220;We can't afford to have a process.&amp;#8220; (well &amp;#8220;boo-hoo-hoo&amp;#8221;).  And these were &lt;I style="mso-bidi-font-style: normal"&gt;highly&lt;/I&gt; paid professionals.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;Look, we've all had the displeasure of working on projects that have no requirements, plan or direction. And conversely, many of us have worked for shops that have so much process that one must fill out a leave slip just to take a break for a call to nature! &lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;To the extreme, each of these environments are highly ineffective and introduces risk ($$$), both to the system under development and our collective livelihood. &lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;Surely, there has to middle ground.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;There must be way.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;Ah-hah: I see I&amp;#8217;ve piqued your interest.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Over the next few weeks, I&amp;#8217;ll be expanding on &amp;#8220;Axioms for Good IT process&amp;#8221;, including the following &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;       &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;&amp;#8220;Its not that you have a process, rather it&amp;#8217;s &lt;I style="mso-bidi-font-style: normal"&gt;what&lt;/I&gt; &lt;I style="mso-bidi-font-style: normal"&gt;process &lt;/I&gt;you have.&amp;#8221;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;
&lt;P style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;       &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;&amp;#8220;People are more important than any process.&amp;#8221; - Grady Booch&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;       &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &amp;#8220;&lt;/SPAN&gt;Good people with a good process will outperform good people with no process every time.&amp;#8221; &lt;SPAN style="mso-spacerun: yes"&gt; - &lt;/SPAN&gt;Grady Booch&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;       &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;It&amp;#8217;s not that you can&amp;#8217;t afford to have a process, it&amp;#8217;s that you can&amp;#8217;t afford NOT to have GOOD process.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;       &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;Eventually, the &lt;/FONT&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;Sarbanes-Oxley Act (&lt;A href="http://www.sarbanes-oxley.com/"&gt;http://www.sarbanes-oxley.com&lt;/A&gt;) will affect you and your IT Shop and the integrity with which each project&amp;#8217;s artifacts are maintained.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;Listen, y&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;FONT face=Arial&gt;our process is not static. It must evolve over time. And it is a &lt;U&gt;living reflection of you and your firm.&lt;/U&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial"&gt;&lt;FONT size=2&gt;I welcome your feedback. By the way, you know that Mom and Pop Shop that just opened down the street? Well they're CMM Level 5.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Arial"&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=5542" width="1" height="1"&gt;</description></item><item><title>Welcome and Thanks!</title><link>http://dotnetjunkies.com/WebLog/fletcher.dunton/archive/2003/08/23/1214.aspx</link><pubDate>Sat, 23 Aug 2003 10:07:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:1214</guid><dc:creator>Fletcher.Dunton</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/fletcher.dunton/comments/1214.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/fletcher.dunton/commentrss.aspx?PostID=1214</wfw:commentRss><description>&lt;p&gt;&lt;font face="Arial" size="2"&gt;Welcome and Thanks!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;Folks:&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;Welcome to my DNJ Blog and thanks VERY much to the good folks at DotNetJunkies for such an outstanding .Net forum:&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;And to &lt;/font&gt;&lt;a href="http://dotnetjunkies.com/WebLog/MarkDiGiovanni"&gt;&lt;font face="Arial" size="2"&gt;Mark Digiovanni&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt;, my work colleague and Ace Developer at-large for turning me on to this. And to the current “Top Bloginator”, &lt;/font&gt;&lt;a href="http://dotnetjunkies.com/WebLog/darrell.norton/"&gt;&lt;font face="Arial" size="2"&gt;Darrell Norton&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt; who turned Mark D onto blogging at DNJ.&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;It’s been a pleasure getting to know these guys and some other extremely sharp talent, through the local .Net User Group ( &lt;/font&gt;&lt;a href="http://www.weprogram.net/"&gt;&lt;font face="Arial" size="2"&gt;www.WeProgram.net&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;), academic affiliations ( &lt;/font&gt;&lt;/font&gt;&lt;a href="http://www.odu.edu/ItPro"&gt;&lt;font face="Arial" size="2"&gt;www.Odu.edu/ItPro&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt; ) and Work (&lt;/font&gt;&lt;a href="http://www.keane.com/"&gt;&lt;font face="Arial" size="2"&gt;www.Keane.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;).&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;I’ve really been contemplating starting a weblog for awhile, as means to express and share the depth of my geek·ti·tudeness, so I’m very happy to be here : ).&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;Thanks again,&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;/////////////////////////////////////////////////////////////////////////&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;Blog Fletch = new Blog(“Fletcher.Dunton”)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;Fletch.Start();&lt;span style="mso-tab-count: 1"&gt;   &lt;/span&gt;// ; )&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;font face="Arial" size="2"&gt;////////////////////////////////////////////////////////////////////////&lt;/font&gt;&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=1214" width="1" height="1"&gt;</description></item></channel></rss>