Quali sono i numeri di versione corretti per C #?

Quali sono i numeri di versione corretti per C #? Cosa è venuto fuori quando? Perché non riesco a trovare alcuna risposta su C # 3.5 ?

Questa domanda serve principalmente a coloro che cercano una risposta utilizzando un numero di versione errato, ad esempio C # 3.5 . La speranza è che chiunque non riesca a trovare una risposta con il numero di versione errato troverà questa domanda e quindi effettuerà nuovamente la ricerca con il numero di versione corretto.

Cronologia delle versioni in lingua C #:

Queste sono le versioni di C # note al momento della stesura di questo scritto:

  • C # 1.0 rilasciato con .NET 1.0 e VS2002 (gennaio 2002)
  • C # 1.2 (abbastanza bizzarramente); rilasciato con .NET 1.1 e VS2003 (aprile 2003). Prima versione per chiamare Dispose su IEnumerator che ha implementato IDisposable . Alcune altre piccole caratteristiche.
  • C # 2.0 rilasciato con .NET 2.0 e VS2005 (novembre 2005). Principali nuove funzionalità: generici, metodi anonimi, tipi nullable, blocchi iteratori
  • C # 3.0 rilasciato con .NET 3.5 e VS2008 (novembre 2007). Principali nuove funzionalità: espressioni lambda, metodi di estensione, alberi di espressioni, tipi anonimi, tipizzazione implicita ( var ), espressioni di query
  • C # 4.0 rilasciato con .NET 4 e VS2010 (aprile 2010). Principali nuove funzionalità: late binding ( dynamic ), delegato e varianza dell’interfaccia, più supporto COM, argomenti denominati, tipo di dati tuple e parametri opzionali
  • C # 5.0 rilasciato con .NET 4.5 e VS2012 (agosto 2012). Caratteristiche principali : programmazione asincrona, attributi di informazioni sul chiamante. Cambio di rottura: chiusura variabile del circuito .
  • C # 6.0 rilasciato con .NET 4.6 e VS2015 (luglio 2015). Implementato da Roslyn . Funzionalità : inizializzatori per proprietà implementate automaticamente, utilizzo di direttive per l’importazione di membri statici, filtri di eccezioni, inizializzatori di elementi, await catch e finally estensione Add metodi negli inizializzatori di raccolta.
  • C # 7.0 rilasciato con .NET 4.7 e VS2017 (marzo 2017) Principali nuove funzionalità : tuple , ref locals e ref return , pattern matching (comprese istruzioni switch basate su pattern), dichiarazioni di parametri outline , funzioni locali , letterali binari, separatori di cifre , e ritorni asincroni arbitrari .
  • C # 7.1 rilasciato con VS2017 v15.3 (agosto 2017) Nuove funzionalità: principale asincrono , inferenza nome membro tupla , espressione predefinita , corrispondenza modello con generici .
  • C # 7.2 rilasciato con VS2017 v15.5 (novembre 2017) Nuove funzionalità: modificatore di accesso protetto privato , Span , alias puntatore interno, aka structly struct , tutto il resto .
  • C # 7.3 rilasciato con VS2017 v15.7 (maggio 2018). Nuove funzionalità: vincoli di tipo generico enum, delegate e unmanaged . ref riassegnazione. Miglioramenti non stackalloc : inizializzazione stackalloc, buffer fixed indicizzati non ancorati, istruzioni fixed personalizzate. Migliore risoluzione di sovraccarico. Variabili di espressione in inizializzatori e query. == e != definito per le tuple. Ora i campi di supporto delle proprietà automatiche possono essere scelti come target dagli attributi.
  • C # 8.0 attualmente in anteprima. Nuove funzionalità previste : tipi di riferimento non annullabili , IAsyncEnumerable , intervalli e metodi di interfaccia predefiniti.

In risposta alla domanda dell’OP:

Quali sono i numeri di versione corretti per C #? Cosa è venuto fuori quando? Perché non riesco a trovare alcuna risposta su C # 3.5?

Non c’è niente come C # 3.5 – la causa della confusione qui è che il C # 3.0 è presente in .NET 3.5. Il linguaggio e il framework sono indipendenti dalla versione, tuttavia – come lo è il CLR, che è alla versione 2.0 per .NET da 2.0 a 3.5, .NET 4 che introduce CLR 4.0, nonostante i service pack. Il CLR in .NET 4.5 presenta vari miglioramenti, ma il controllo delle versioni non è chiaro: in alcuni punti può essere indicato come CLR 4.5 ( questa pagina MSDN utilizzata per riferirsi ad esso in questo modo, ad esempio), ma la proprietà Environment.Version rimane segnala 4.0.xxx.

Informazioni più dettagliate sulla relazione tra lingua, runtime e versioni di framework sono disponibili sul sito C # in Depth . Questo include informazioni su quali funzionalità di C # 3.0 è ansible utilizzare per il targeting di .NET 2.0. (Se qualcuno vuole portare tutto il contenuto in questa risposta wiki, è il benvenuto.)

A partire dal 3 maggio 2017, il team di linguaggio C # ha creato una cronologia delle versioni e delle funzionalità di C # sul proprio repository github: Funzionalità aggiunte nelle versioni di linguaggio C # . C’è anche una pagina che tiene traccia delle funzionalità linguistiche imminenti e implementate di recente .

Il problema più grande quando si gestiscono i numeri di versione di C # è il fatto che non è legato a una versione di .NET Framework, che sembra essere dovuta alle versioni sincronizzate tra Visual Studio e .NET Framework.

La versione di C # è in realtà legata al compilatore, non al framework. Ad esempio, in Visual Studio 2008 è ansible scrivere C # 3.0 e utilizzare .NET Framework 2.0, 3.0 e 3.5. La nomenclatura C # 3.0 descrive la versione della syntax del codice e le funzionalità supportate nello stesso modo in cui ANSI C89, C90, C99 descrivono la syntax / le caratteristiche del codice per C.

Dai un’occhiata a Mono e vedrai che Mono 2.0 (implementato per lo più la versione 2.0 di .NET Framework dalle specifiche ECMA) supporta la syntax e le caratteristiche di C # 3.0.

Questo è lo stesso della maggior parte delle risposte qui, ma tabularized per facilità, e ha versioni di Visual Studio e .NET per completezza.

 ╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗ ║ C# version ║ VS version ║ .NET version ║ CLR version ║ Release date ║ ╠════════════╬════════════╬══════════════╬═════════════╬══════════════╣ ║ 1.0 ║ 2002 ║ 1.0 ║ 1.0 ║ Feb 2002 ║ ║ 1.2 ║ 2003 ║ 1.1 ║ 1.1 ║ Apr 2003 ║ ║ 2.0 ║ 2005 ║ 2.0 ║ 2.0 ║ Nov 2005 ║ ║ ║ ║ 3.0 ║ 2.0 ║ Nov 2006 ║ ║ 3.0 ║ 2008 ║ 3.5 ║ 2.0 ║ Nov 2007 ║ ║ 4.0 ║ 2010 ║ 4.0 ║ 4 ║ Apr 2010 ║ ║ 5.0 ║ 2012 ║ 4.5 ║ 4 ║ Aug 2012 ║ ║ 5.0 ║ 2013 ║ 4.5.1 ║ 4 ║ Oct 2013 ║ ║ ║ ║ 4.5.2 ║ 4 ║ May 2014 ║ ║ 6.0 ║ 2015 ║ 4.6 ║ 4 ║ Jul 2015 ║ ║ ║ ║ 4.6.1 ║ 4 ║ Nov 2015 ║ ║ ║ ║ 4.6.2 ║ 4 ║ Aug 2016 ║ ║ 7.0 ║ 2017 ║ ║ ║ Mar 2017 ║ ║ ║ ║ 4.7 ║ 4 ║ May 2017 ║ ║ 7.1 ║ 2017(v15.3)║ ║ ║ Aug 2017 ║ ║ ║ ║ 4.7.1 ║ 4 ║ Oct 2017 ║ ║ 7.2 ║ 2017(v15.5)║ ║ ║ Dec 2017 ║ ║ ║ ║ 4.7.2 ║ 4 ║ Apr 2018 ║ ║ 7.3 ║ 2017(v15.7)║ ║ ║ May 2018 ║ ╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝ 

Nota: lo sviluppo .NET è praticamente indipendente da VS in questi giorni, non esiste alcuna correlazione tra le versioni di ciascuno. Fare riferimento a: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies per ulteriori informazioni.

  • C # 1.0 con Visual Studio.NET

  • C # 2.0 con Visual Studio 2005

  • C # 3.0 con Visual Studio 2008

  • C # 4.0 con Visual Studio 2010

  • C # 5.0 con Visual Studio 2012

  • C # 6.0 con Visual Studio 2015

  • C # 7.0 con Visual Studio 2017

VERSIONE _____ SPECIFICA LINGUA ______ COMPILATORE MICROSOFT

C # 1.0 / 1.2 ____ dicembre 2001 ? / 2003 ? ___________ gennaio 2002 ?

C # 2.0 _______ settembre 2005 ________________ Novembre 2005 ?

C # 3.0 _______ Maggio 2006 _____________________ Novembre 2006 ?

C # 4.0 _______ marzo 2009 (bozza) ______________ Aprile 2010 ?

C # 5.0; rilasciato con .NET 4.5 in agosto 2012

C # 6.0; rilasciato con .NET 4.6 2015

C # 7.0; rilasciato con .NET 4.7 2017

Puoi controllare le ultime versioni di C # qui Versioni C #

C # Cronologia delle versioni:

C # è un linguaggio di programmazione orientato agli oggetti semplice e potente sviluppato da Microsoft.

C # si è evoluto molto dalla sua prima versione nel 2002. C # è stato introdotto con .NET Framework 1.0.

La seguente tabella elenca le funzionalità importanti introdotte in ciascuna versione di C #.

Inserisci qui la descrizione dell'immagine

E l’ultima versione di C # è disponibile nelle versioni C # .

Ho riassunto la maggior parte delle versioni in questa tabella. Gli unici che mancano dovrebbero essere le versioni di ASP.NET Core. Ho anche aggiunto diverse versioni di ASP.NET MVC.

Si noti che ASP.NET 5 è stato rinominato come ASP.NET Core 1.0 e ASP.NET MVC 6 è stato rinominato come ASP.NET Core MVC 1.0.0. Credo che questo cambiamento sia avvenuto verso gennaio 2016.

Ho incluso la data di rilascio di ASP.NET 5 RC1 nella tabella, ma devo ancora includere il nucleo 1.0 di ASP.NET e altre versioni core, perché non sono riuscito a trovare le date esatte di rilascio. È ansible leggere ulteriori informazioni sulle date di rilascio relative a ASP.NET Core qui: Quando è in esecuzione ASP.NET Core 1.0 (ASP.NET 5 / vNext)?

Versione

Confrontando gli articoli MSDN “Novità nel linguaggio e nel compilatore C # 2.0″ e ” Novità in Visual C # 2005 “, è ansible dedurre che “C # major_version.minor_version” è coniato in base alla numerazione della versione del compilatore.

C # 1.2 corrisponde a .NET 1.1 e VS 2003 e viene anche denominato Visual C # .NET 2003 .

Ma ulteriormente Microsoft ha smesso di incrementare i numeri della versione secondaria (dopo il punto) o di averli diversi da zero, 0 . Sebbene si noti che C # corrispondente a .NET 3.5 è denominato in msdn.microsoft.com come “Visual C # 2008 Service Pack 1” .

Esistono due nomi paralleli: dalla numerazione delle versioni .NET / del compilatore e dalla numerazione di Visual Studio.

C # 2.0 è un sinonimo per Visual C # 2005

C # 3.0 corrisponde (o, più correttamente, può targetizzare) a:

  • .NET 2.0 <==> Visual C # 2005
  • .NET3.0 <==> Visual C # 2008
  • .NET 3.5 <==> Visual C # 2008 Service Pack 1