There are a number of good books and articles that detail the specific language features in C# and how they compare to Java. It's sufficient to say, however, that if you are a Java programmer you will find the learning curve for C# to be quite short. For practical purposes the languages are the same. There is one important non-technical difference that's worth noting. In a strange twist of fate, Microsoft has found that the only card it really holds to "fight" Java in the marketplace is open standards. Microsoft is aggressively pursuing the standardization of the C# language and the associated Common Language Interface (CLI). They have already been blessed by ECMA and expect to establish C# as an ISO standard by January 2003. By comparison, Sun has refused to submit Java to standards bodies and instead manages the language through the Java Community Process (JCP). Look for Microsoft to make a big deal about the standardization difference between C# and Java and lots of references to Java as a closed, legacy tool. An interesting point is that for years Microsoft has not adhered very strictly to the ANSI C++ standards. Within the last month Microsoft has announced that they will be the most ANSI compliant C++ implementation in their next Visual Studio release. Microsoft is tightening their standards story with respect to C++ to close a hole in their armor in preparation for sticking it to Sun and Java on the standards front.
This was first published in December 2002