I was thrown suddenly into contact with Microsoft's C# programming language when my boss asked me to create a .NET Web Service interface to the AltaVista search engine for a client. The client needed the project fast. ("Can you be there at 9:00 A.M. tomorrow?") Because I've been coding VBScript in Visual InterDev, Visual Basic (VB), and Visual C++ (VC++) components for years, and I've been programming in C since 1978, I expected to figure out C# as the project went along. C# proved not only easy to learn but delightful to work with.
Using C# will be almost effortless for you if you know C, you are familiar with Class.Method and Class.Property syntax, and you have learned the meaning of the namespace keywords. If you know C++, you’ll find C# coding to be quicker and simpler because the .NET Framework transparently handles the interface and prototyping details that must remain visible in C++ code. Of course, using any present-day development system involves learning which libraries and classes you need, but the online help in .NET Beta 2 is comprehensive. Furthermore, IntelliSense menus for namespace, object, property, and method references mean you can often code whole functions without referring to the documentation at all.
Because C# is a new language, everyone who uses it will be switching from another language. (That is, unless universities begin teaching C# instead of Java—odds, anyone?) Will C++ programmers make the switch to C#? Most of them probably should. C++ is one of the most powerful languages ever invented, but it's also one of the hardest to write well and one of the easiest to write badly. Certainly one joy of C# is the clean, uncluttered, readable appearance of the code. The first line of defense in software quality is the human eye reading the program to verify that it does what it should and that it handles all out-of-bounds conditions. C# certainly makes that verification easier to do correctly.
Will VB programmers make the switch to C#? As a VB (and C++, C, Pascal, and FORTRAN) maven, I make no claims that any language is superior to all others. There is a best language for each situation, and no language is best in all situations. That said, some VB programmers might switch to (or dual-specialize in) C# to gain the respect they haven't been getting as mere VB coders. Otherwise, because all the .NET languages can use all the features of the .NET Framework, VB programmers don't have much reason to switch. I expect that Visual Basic .NET (VB.NET) will be the easiest of the .NET languages to find programmers for in the long run (as VB is now), and I will advise my clients to consider that when designing new projects.
Will Java programmers make the switch to C#? For better or worse, language-centric attitudes will prevent most Java programmers from even trying C#, so informed comparisons between the two will remain few. One fact is clear: The original purpose of Java—to support an OS-independent, client-side computing environment—has not been and never will be realized. The original C language, one of the most portable languages ever, demonstrated long ago that you can't rely on multivendor compatibility for any but the simplest features. C#, and the .NET Framework in general, explicitly acknowledge that fact by locating complex code on servers—where the environment can be controlled—and keeping the client-side coding to a manageable minimum. Java had best do the same or it will go the way of C itself, superseded by something better.