It's my favourite language at the moment and I'm interested in learning its history.
Semicolons are mathematically proven to make your language at least 9% sexier.
Try to get away from the 'Basic' stuff as C(++) and Java devs thought VB was way too lame to switch.
Furthermore: It sounds way cooler on parties when saying 'Hey I'm C-SHARP!', then 'I'm Visual Basic'. Just ain't gonna score you anything.
General consensus is that they wanted a post-C++ language that had all the stuff Java offered, but wasn't tied to the JVM. As Sam Meldrum noted, the CLR and C# are basically Java and the JVM implemented by a different development team.
The CLR has also allowed them to consolidate a lot of under the hood work so that improvements in language capabilities can be shared between Visual Basic and C#; it gives them a clean 'Noob language' vs 'Pro language' upsell opportunity.
C# is also an easier way to do components than COM/C++. COM is neither an easy nor a forgiving environment to program in. I don't know all of the technical details, but I do recall that a lot of the things that COM provided through lots of work C# provides for 'free'.
Below is a brief outline I did for someone a while back answering this question:
C#
- intended as a simple general - purpose object-oriented programming
- development led by Anders Hejlsberg
- Hejlsberg previously had designed Borland's Turbo Pascal
- syntax similar to C++
- initially called COOL for C-like Object Orientated Language
- renamed C# because it is a step above C/C++
- # (sharp) means a semi-tone above in music
- can also be viewed as a stacked 4 pluses so C++++
- C# is the .NET language that is most similar to the CLR
- Hejlsberg strived to create constructs as answers to issues he saw in (C++, Java, Delphi etc.)
- Stated Goals
- support for software engineering
- strong type checking
- array bounds checking
- detection of attempts to utilize uninitialized variables
- automatic garbage collection
- software robustness and durability are important
- allow for use in distributed environments
- not intended as direct competitor C/C++
- support for software engineering
- Stated Goals
Further Reading
Microsoft were using Java, they had their own JVM and supported it in Internet Explorer, but they wanted Java to interoperate with existing C++/VB code bases, and extended Java to provide that.
Sun didn't like that, because it didn't want to see "Microsoft Java" applications that wouldn't run on Sun hardware, so it took them to court to have Microsoft's Java implementation banned, and won.
Without those extensions, Java's appeal to Microsoft (namely, as a much superior replacement for both C++ and VB in most of their application areas) was lost, so they recreated what they needed as C#/VB.NET.
The codename of C# was Project Cool, which was rumoured to be a clean-room implementation of Java. This was back in the days when Sun was suing Microsoft over bastardizing the Java language. As I recall, Sun didn't like the Microsoft-specific extensions in J++, which allowed it to interoperate with COM. So where did the name C# come from?
C# name was musically inspired. It is a C-style language that is a step above C/C++, where sharp (#) means a semi-tone above the note. (Being a musician myself, I think this is awfully fun.) Back when .NET made its debut, an amusing quip from the Linux crowd was to refer to C# as Db (D-flat), which is the same note as C#, but has different connotations. Two MS Research languages also bear musically-related names: Polyphonic C# and F#.
From C#/.NET History Lesson.