Although C# is derived from the C programming language, it has features such as garbage collection that allow beginners to become proficient in C# more quickly than in C or C++. Similar to Java, it is object-oriented, comes with an extensive class library, and supports exception handling, multiple types of polymorphism, and separation of interfaces from implementations. Those features, combined with its powerful development tools, multi-platform support, and generics, make C# a good choice for many types of software development projects: rapid application development projects, projects implemented by individuals or large or small teams, Internet applications, and projects with strict reliability requirements. Testing frameworks such as NUnit make C# amenable to test-driven development and thus a good language for use with Extreme Programming (XP). Its strong typing helps to prevent many programming errors that are common in weakly typed languages. Because of these similarities to other languages, it is possible to introduce C# as a language with features of C++ having the programming style of Java and the rapid application model of BASIC.
A large part of the power of C# (as with other .NET languages), comes with the common .NET Framework API, which provides a large set of classes, including ones for encryption, TCP/IP socket programming, and graphics. Developers can thus write part of an application in C# and another part in another .NET language (e.g. VB.NET), keeping the tools, library, and object-oriented development model while only having to learn the new language syntax.
Because of the similarities between C# and the C family of languages, as well as Java, a developer with a background in object-oriented languages like C++ may find C# structure and syntax intuitive.
Microsoft, with Anders Hejlsberg as Chief Engineer, created C# as part of their .NET initiative and subsequently opened its specification via the ECMA. Thus, the language is open to implementation by other parties. Other implementations include Mono and DotGNU.
C# and other .NET languages rely on an implementation of the virtual machine specified in the Common Language Infrastructure, like Microsoft's Common Language Runtime (CLR). That virtual machine manages memory, handles object references, and performs Just-In-Time (JIT) compiling of Common Intermediate Language code. The virtual machine makes C# programs safer than those that must manage their own memory and is one of the reasons .NET language code is referred to as managed code. More like Java than C and C++, C# discourages explicit use of pointers, which could otherwise allow software bugs to corrupt system memory and force the operating system to halt the program forcibly with nondescript error messages.
Microsoft's original plan was to create a rival to Java, named J++, but this was abandoned to create C#, codenamed "Cool".
Microsoft submitted C# to the ECMA standards group mid-2000.
- Aisha Ikram (2003-06-17). "Quick C#". http://www.codeproject.com/: The Code Project. http://www.codeproject.com/Articles/4300/Quick-C. Retrieved 2012-04-12. "C# is a language with the features of C++, programming style like Java and rapid application model of BASIC."
- Allen Smithee (2005-07-15). "The Father of C# on the Past, Present and Future of Programming". http://www.microsoft-watch.com/: Microsoft Watch. http://www.microsoft-watch.com/article2/0,2180,1837434,00.asp. Retrieved 2012-10-21. "Originally code-named "Cool," C# was designed to be Microsoft's Java killer."
- "C# Programming". http://www.hitmill.com/: Hitmill. 2009-05-30. http://www.hitmill.com/programming/dotNET/csharp.html. Retrieved 2012-10-21. "C#, a Java-like programming language, was submitted by Microsoft to the ECMA standards group in mid-2000."