AntonioPelleriti.it [aka z9]

I code, therefore I am

NAVIGATION - SEARCH

Storia delle versioni di C#

Mi capita spesso di ricercare in quale versione di C# è stata introdotta una certa funzionalità, o al contrario, voler capire quali sono le novità introdotte in una data versione.

Una mia storia delle versioni di C# è naturalmente presente nelle varie edizioni del mio libro "Programmare con C#" (al momento la più recente è la versione su C# 7).

Nell'attesa di lavorare ad una nuova edizione, mi tengo naturalmente al passo con i tempi, e soprattutto per sfruttare le migliorie apportate al linguaggio, ad ogni nuova release, presente e futura, vado a cercare queste nuove funzioni.

Nella repository GitHub ufficiale del linguaggio C#, sono presenti tutti i documenti di progetto, sia quelli passati, che le nuove proposte per il futuro. 

Inoltre la pagina Features Added in C# Language Versions riassume tutte le versioni, con relative funzionalità introdotte e versione di Visual Studio che le comprende.

Ad oggi (giugno 2018) l'elenco delle versioni di C# parte dalla 1.0 e arriva alla 7.3, ed è riassunta qui di seguito:

 

C# 1.0 (Visual Studio.NET)

Classes

Structs

Interfaces

Events

Properties

Delegates

Expressions

Statements

Attributes

Literals

 

C# 2 (VS 2005)

Generics

Partial types

Anonymous methods

Iterators

Nullable types

Getter/setter separate accessibility

Method group conversions (delegates)

Static classes

Delegate inference

 

C# 3 (VS 2008)

Implicitly typed local variables

Object and collection initializers

Auto-Implemented properties

Anonymous types

Extension methods

Query expressions

Lambda expression

Expression trees

Partial methods

 

C# 4 (VS 2010)

Dynamic binding

Named and optional arguments

Co- and Contra-variance for generic delegates and interfaces

Embedded interop types ("NoPIA")

 

C# 5 (VS 2012)

Asynchronous methods

Caller info attributes

 

C# 6 (VS 2015)

Draft Specification online

Compiler-as-a-service (Roslyn)

Import of static type members into namespace

Exception filters

Await in catch/finally blocks

Auto property initializers

Default values for getter-only properties

Expression-bodied members

Null propagator (null-conditional operator, succinct null checking)

String interpolation

nameof operator

Dictionary initializer

 

C# 7.0 (Visual Studio 2017)

Out variables

Pattern matching

Tuples

Deconstruction

Discards

Local Functions

Binary Literals

Digit Separators

Ref returns and locals

Generalized async return types

More expression-bodied members

Throw expressions

 

C# 7.1 (Visual Studio 2017 version 15.3)

Async main

Default expressions

Reference assemblies

Inferred tuple element names

Pattern-matching with generics

 

C# 7.2 (Visual Studio 2017 version 15.5)

Span and ref-like types

In parameters and readonly references

Ref conditional

Non-trailing named arguments

Private protected accessibility

Digit separator after base specifier

 

C# 7.3 (Visual Studio 2017 version 15.7)

System.Enum, System.Delegate and unmanaged constraints.

Ref local re-assignment: Ref locals and ref parameters can now be reassigned with the ref assignment operator (= ref).

Stackalloc initializers: Stack-allocated arrays can now be initialized, e.g. Span<int> x = stackalloc[] { 1, 2, 3 };.

Indexing movable fixed buffers: Fixed buffers can be indexed into without first being pinned.

Custom fixed statement: Types that implement a suitable GetPinnableReference can be used in a fixed statement.

Improved overload candidates: Some overload resolution candidates can be ruled out early, thus reducing ambiguities.

Expression variables in initializers and queries: Expression variables like out var and pattern variables are allowed in field initializers, constructor initializers and LINQ queries.

Tuple comparison: Tuples can now be compared with == and !=.

Attributes on backing fields: Allows [field: …] attributes on an auto-implemented property to target its backing field.

 

N.B. 

nella repository è presente anche il documento delle proposte che potrebbero vedere la luce con la versione C# 8!

Storia delle versioni di .NET, C# e Visual Studio.

Microsoft ha parlato per la prima volta della nuova piattaforma .NET, originariamente conosciuta come NGWS (Next Generation Web Services) alla conferenza PDC dell'11 luglio 2000. rilasciando una agli sviluppatori una Tech Preview.

La prima Beta 1 di .NET 1.0, vede invece la luce l'1 novembre 2000, seguita da una Beta 2 il 20/06/2001. 

Nella seguente tabelle sono riassunte le successive release della piattaforma .NET, delle specifiche di C# e dell'IDE Visual Studio.

Anno  .NET Framework C# Visual Studio
2002 1.0 1.0 Visual Studio .NET 2002
2003 1.1 1.2 Visual Studio .NET 2003
2005 2.0 2.0 Visual Studio 2005
2006 3.0 2.0
2007 3.5 3.0 Visual Studio 2008
2010 4.0 4.0 Visual Studio 2010
2012 4.5 5.0 Visual Studio 2012
2013 4.5.1 5.0 Visual Studio 2013

Storia delle versioni di .NET, C# e Visual Studio.

.NET Framework Versions, C# Releases, Visual Studio Editions history