diff --git a/Language-Version-History.md b/Language-Version-History.md index 44a76b2..97a5027 100644 --- a/Language-Version-History.md +++ b/Language-Version-History.md @@ -1,7 +1,7 @@ Features Added in C# Language Versions ==================== -# [C# 1.0](https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#.NET_.282002.29) (Visual Studio.NET) +# [C# 1.0](https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#.NET_.282002.29) - Visual Studio .NET 2002 - Classes - Structs @@ -14,12 +14,12 @@ Features Added in C# Language Versions - Attributes - Literals -# [C# 1.2](https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-12) +# [C# 1.2](https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-12) - Visual Studio .NET 2003 - Dispose in foreach - foreach over string specialization -# [C# 2](https://msdn.microsoft.com/en-us/library/7cz8t42e(v=vs.80).aspx) (VS 2005) +# [C# 2](https://msdn.microsoft.com/en-us/library/7cz8t42e(v=vs.80).aspx) - Visual Studio 2005 - Generics - Partial types - Anonymous methods @@ -30,7 +30,7 @@ Features Added in C# Language Versions - Static classes - Delegate inference -# [C# 3](https://msdn.microsoft.com/en-us/library/bb308966.aspx) (VS 2008) +# [C# 3](https://msdn.microsoft.com/en-us/library/bb308966.aspx) - Visual Studio 2008 - Implicitly typed local variables - Object and collection initializers - Auto-Implemented properties @@ -41,17 +41,17 @@ Features Added in C# Language Versions - Expression trees - Partial methods -# [C# 4](https://msdn.microsoft.com/en-us/magazine/ff796223.aspx) (VS 2010) +# [C# 4](https://msdn.microsoft.com/en-us/magazine/ff796223.aspx) - Visual Studio 2010 - Dynamic binding - Named and optional arguments - Co- and Contra-variance for generic delegates and interfaces - Embedded interop types ("NoPIA") -# [C# 5](https://blogs.msdn.microsoft.com/mvpawardprogram/2012/03/26/an-introduction-to-new-features-in-c-5-0/) (VS 2012) +# [C# 5](https://blogs.msdn.microsoft.com/mvpawardprogram/2012/03/26/an-introduction-to-new-features-in-c-5-0/) - Visual Studio 2012 - Asynchronous methods - Caller info attributes -# [C# 6](https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6) (VS 2015) +# [C# 6](https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6) - Visual Studio 2015 - [Draft Specification online](https://github.com/dotnet/csharplang/blob/master/spec/README.md) - Compiler-as-a-service (Roslyn) - Import of static type members into namespace @@ -65,7 +65,7 @@ Features Added in C# Language Versions - nameof operator - Dictionary initializer -# [C# 7.0](https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/) (Visual Studio 2017) +# [C# 7.0](https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/) - Visual Studio 2017 - [Out variables](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.0/out-var.md) - [Pattern matching](https://github.com/dotnet/csharplang/blob/master/proposals/patterns.md) - [Tuples](https://github.com/dotnet/roslyn/blob/master/docs/features/tuples.md) @@ -79,14 +79,14 @@ Features Added in C# Language Versions - More expression-bodied members - [Throw expressions](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.0/throw-expression.md) -# [C# 7.1](https://blogs.msdn.microsoft.com/dotnet/2017/10/31/welcome-to-c-7-1/) (Visual Studio 2017 version 15.3) +# [C# 7.1](https://blogs.msdn.microsoft.com/dotnet/2017/10/31/welcome-to-c-7-1/) - Visual Studio 2017 version 15.3 - [Async main](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.1/async-main.md) - [Default expressions](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.1/target-typed-default.md) - [Reference assemblies](https://github.com/dotnet/roslyn/blob/master/docs/features/refout.md) - [Inferred tuple element names](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.1/infer-tuple-names.md) - [Pattern-matching with generics](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.1/generics-pattern-match.md) -# [C# 7.2](https://blogs.msdn.microsoft.com/dotnet/2017/11/15/welcome-to-c-7-2-and-span/) (Visual Studio 2017 version 15.5) +# [C# 7.2](https://blogs.msdn.microsoft.com/dotnet/2017/11/15/welcome-to-c-7-2-and-span/) - Visual Studio 2017 version 15.5 - [Span and ref-like types](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/span-safety.md) - [In parameters and readonly references](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/readonly-ref.md) - [Ref conditional](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/conditional-ref.md) @@ -94,7 +94,7 @@ Features Added in C# Language Versions - [Private protected accessibility](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/private-protected.md) - [Digit separator after base specifier](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/leading-separator.md) -# C# 7.3 (Visual Studio 2017 version 15.7) +# C# 7.3 - Visual Studio 2017 version 15.7 - `System.Enum`, `System.Delegate` and [`unmanaged`](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/blittable.md) constraints. - [Ref local re-assignment](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/ref-local-reassignment.md): Ref locals and ref parameters can now be reassigned with the ref assignment operator (`= ref`). - [Stackalloc initializers](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/stackalloc-array-initializers.md): Stack-allocated arrays can now be initialized, e.g. `Span x = stackalloc[] { 1, 2, 3 };`. @@ -105,7 +105,7 @@ Features Added in C# Language Versions - [Tuple comparison](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/tuple-equality.md): Tuples can now be compared with `==` and `!=`. - [Attributes on backing fields](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.3/auto-prop-field-attrs.md): Allows `[field: …]` attributes on an auto-implemented property to target its backing field. -# C# 8.0 (Visual Studio 2019 version 16.3, .NET Core 3.0) +# C# 8.0 - Visual Studio 2019 version 16.3 with .NET Core 3.0 - [Nullable reference types](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/nullable-reference-types-specification.md): express nullability intent on reference types with `?`, `notnull` constraint and annotations attributes in APIs, the compiler will use those to try and detect possible `null` values being dereferenced or passed to unsuitable APIs. - [Default interface members](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/default-interface-methods.md): interfaces can now have members with default implementations, as well as static/private/protected/internal members except for state (ie. no fields). - [Recursive patterns](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/patterns.md): positional and property patterns allow testing deeper into an object, and switch expressions allow for testing multiple patterns and producing corresponding results in a compact fashion.