C# is pronounced as "C-Sharp". The name 'C#' was inspired by the musical notation where a sharp indicates that the written note should be made a semitone higher in pitch. This is similar to the language name of C++, where '++' indicates that a variable should be incremented by 1 after being evaluated. The sharp symbol also resembles a group of four '+' symbols, further implying that the language is an increment of C++.
Version | Date | .NET Framework | Visual Studio | Important Features |
---|---|---|---|---|
C# 1.0 | January 2002 | .NET Framework 1.0 | Visual Studio .NET 2002 | Basic features |
C# 1.1 C# 1.2 | April 2003 | .NET Framework 1.1 | Visual Studio .NET 2003 | |
C# 2.0 | November 2005 | .NET Framework 2.0 | Visual Studio .NET 2005 | Generics Partial types Iterators Private setters (properties) Method group conversions (delegates) Static classes |
C# 3.0 | November 2007 | .NET Framework 2.0 .NET Framework 3.0 .NET Framework 3.5 | Visual Studio .NET 2008 Visual Studio .NET 2010 | Implicitly typed local variables Object and collection initializers Query expressions Lambda expressions Expression trees Partial methods |
C# 4.0 | April 2010 | .NET Framework 4 | Visual Studio .NET 2010 | Dynamic binding (late binding) Named and optional arguments Generic |
C# 5.0 | August 2012 | .NET Framework 4.5 | Visual Studio .NET 2012 Visual Studio .NET 2013 | Asynchronous methods |
C# 6.0 | July 2015 | .NET Framework 4.6 | Visual Studio .NET 2015 | Exception filters catch/finally blocks Primary constructor Dictionary initializer |
C# 7.0 | March 2017 | .NET Framework 4.6.2 | Visual Studio .NET 2017 | Tuples Inline out variable declaration Pattern matching Ref returns and locals |
C# 7.1 | August 2017 | .NET Framework 4.7 | Visual Studio .NET 2017 | Default literal expressions |
C# 7.2 | November 2017 | .NET Framework 4.7.1 | Visual Studio .NET 2017 | private protected access modifier |
C# 7.3 | May 2018 | .NET Framework 4.7.2 | Visual Studio .NET 2017 | Reassigning ref local variables Using initializers on stackalloc arrays Using additional generic constraints |