Being a self-taught "amateur" programmer, I do most programming in my spare time, for relatively small projects, or for small study-related utilities. I greatly enjoy it, though, and have learned a great deal over the past couple of years. Through various weblogs and websites, I've become acquainted with version control, bug tracking, unit testing etc.

The languages I'm currently working in are mostly Delphi (2007 for Win32), as well as some PHP. I've been very happy with both (actually, I'm using Delphi for a rather large side-project), but the things I've seen of .NET (especially C#) seem very, very interesting. I haven't really had the time to dive into .NET, though; also, it seems like there are some serious financial burdens one needs to overcome before one can get started with it (the whole VS stack is quite an investment for someone who doesn't spend his whole work day programming).

So my question boils down to, actually, a couple of related questions:

What strengths of .NET would make a switch to it worthwhile for an amateur programmer like me?

What are good resources to get started with .NET/C#, esp. books?

How would you build a relatively cheap development stack for .NET?

I realize this is a rather open question, but I haven't really found a good web resource that covers these topics. Also, advice from experienced programmers like you guys around here tends to be invaluable!

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

There is a whole world of (free) dev tools available, that will help you out in all kinds of scenario's. Start out with Scott Hanselman's Developer Tool List. If you don't want to use Visual Studio, you can also try the (fast!) SharpDevelop, an IDE for C#, VB.NET (and Boo, but you might not know that one). Good luck!

Here is an updated answer for your question,
Microsoft just released a web based installer that will install everything you need for a development environment in one step. One disclaimer is that this only tools for web development are installed.

You can install any part or all of the free development tools used for web development in the .net framework, including Visual Studio 2008 Express, SQL Server Express, etc. It also includes dev tools outside of the Microsoft realm for example:

Having only developed programs with .NET through Mono (using C# and IronPython), my experience with IDEs only involve Emacs and experiments with Eclipse and MonoDevelop. Mono is free (as in open source), but incomplete with respect to the reference implementation that is Microsoft .NET. The Mono implementation is nevertheless still large enough for enterprise(y) applications.

In the IDE corner: At a talk with Anders Hejlsberg (one of the designers of C#), he mentioned that using the .NET platform without code-completion stopped even seasoned testers in their tracks. After that I decided to try out Eclipse and MonoDevelop, both of which have code-completion, but found their abstraction layers prevented me from understanding how the framework really functions. So I returned to Emacs and used the (very slow) online documentation. I know a lot of developers swear by Visual Studio and can't imagine coding against .NET without the assistance it gives. I just can't get used to parenting in software :).

One thing is sure though, and that is that you should go buy Peter Seestofts "C# Precisely"; with luck, it's the only general-purpose book on C# you'll ever need. And when/if your page ever loads on MSDN, the documentation you'll find there is also very good. Peter Seestoft has also written a generic collections library for c#: C5.

As to what strengths .NET has: It's big (as Java). It's integrated into the Windows platform. A lot of jobs are available if you can use the .NET framework.

But - as always - I would recommend Python for great fun when unpaid. (You can also access the .NET framework through IronPython, a Microsoft implementation of CPython).

I find the development rate of the .NET Framework and the IDE (Visual Studio) phenomenal.. We are getting some really cool stuff coming out of Redmond, and they seem to be ever-increasing in their responsiveness to user feedback, which I think is awesome :)

There are a lot of good resources already listed. Obviously extensive use of Stack Overflow would be a suggestion I now always make to new developers.

I personally find O'Reilly "Head Rush/First" books to be some of the best software tutorial books on the market.. I always had good results with them. However, I have not read their C# book myself.

You could also take a look at SharpDevelop. The shame about the otherwise excellent express editions of Visual Studio is that they are crippled regarding addins, so you don't get any unit testing. SharpDevelop lacks some of the features of the full version but has excellent support for things like NUnit, NCover, and even some refactoring (but nothing like Resharper, unfortunately). Most excellently you have Subversion integration for source control. I'm starting to use Subversion now and love it to bits.

I spent six years in Delphi and loved it to bits. The main strength for me of C# over Object Pascal is the syntax - it's much cleaner. There are some really great new features in C# 3 (Dotnet 3.5) - checkout LINQ. However, in terms if you are coding for pleasure, I wouldn't say there's any driving reason to convert to Dotnet. You'd probably find it more likely to be able to find work in Dotnet than Delphi these days.

What strengths of .NET would make a switch to it worthwhile
for an amateur programmer like me?

I think the major thing is .NET Framework - it's just a big and really well done Framework for practically anything within Windows world. Microsoft continues to improve it and adds new features while supporting old versions, so you can easily convert your project from old to new frameworks. .NET framework allows you to easily create console application, windows forms application, web application, windows service, web service. It has classes for data structures, multi-threading, I/O, working with database, anything... And besides .NET is managed world, so there're no memory leaks, pointers and other similar C++ pain.

C# language is relatively easy to learn and VS.NET is a pretty good IDE (especially if you use ReSharper).

What are good resources to get started with .NET/C#, esp. books?

Microsoft's universal answer (as we know, it's 42) is: MSDN. And .NET has a big community of people. You can find lots of forums and books on .NET. I won't recommend anything, but I'd suggest to: first learn language basics, then learn .NET internals (what is GC, Reflection, etc.), then read about technologies (Web, Win, Remoting - whatever you will work with).