I have been working on learning C# from Jesse Liberty's book published by O'Reilly. It took me a while to start working on it, which is why I am using the 4th Edition even though a later edition is available.
I find the author throws a lot of detail at me without much philosophy as to why the detail is useful. I'm writing a few paragraphs to capture my insights, such as they are, about why certain features are worth learning
This is the last chapter in which console applications are written, and it introduces the last few concepts needed to start writing GUI programs. What I'm figuring out, even though the book doesn't say so, is that both the Microsoft developers who created Visual Studio, application programmers, have invested a great deal of work to create a wide array of Windows Forms which can be used to prompt the user for various kinds of information (a choice from a radio button menu, a file name, a date, etc.) and provide the user a method to launch further action (the enter key, an "OK" button, etc.) It is desireable to be able to reuse these Windows forms to perform many different functions. For example a date selection form that looks exactly the same might be used to dispay a diary page, convert the date to the Julian calendar, or mark the date as a vacation day. So it is desireable to have delegates, which are type-safe function pointers, to pass to the form different actions the form can perform once the data from the user has been obtained and the user has launched the action.
From a flexibility point of view, it is desireable to be able to put up several forms at once, and allow the user to decide in which order the forms will be filled out and launched (sometimes they depend on each other, but sometimes they don't, so provide the flexibility when there is no interdependence). This brings up the concept of a callback, which is a method in the form invoker that will be executed to inform the invoker that the user has finished using the form.
I've finally downloaded the HTML tidy utility, which I used to convert some of my HTML web pages to XHTML. Through experimentation, I found Microsoft Windows XP responds well to keeping the file extention ".htm". It does not know what to do with ".xhtml". If you open a file with extension ".xml" it puts you into the IE 7 XML viewer rather than displaying it as a web page.
This is relevant to C# because that language has many options for manipulating XML.
Developing with ASP.NET was ostensibly very similar to developing Win Forms applications-you started with an empty design surface, dragged visual controls onto it, and double-clicked to bring up an editor where you wrote your code-behind. (Nevermind that this model encouraged low quality architectures as people wrote monolithic chunks of event handler code–perpetuating bad habits that we learned with VB6).