Was sind die richtigen Versionsnummern für C #? Was kam wann heraus? Warum kann ich keine Antworten zu C # 3.5 finden?
Diese Frage soll in erster Linie denjenigen helfen, die nach einer Antwort mit einer falschen Versionsnummer suchen, z. C # 3.5. Die Hoffnung ist, dass jeder, der keine Antwort mit der falschen Versionsnummer findet, this frage findet und dann erneut mit der richtigen Versionsnummer sucht.
Dies sind die Versionen von C # , die zum Zeitpunkt dieses Schreibens bekannt waren:
Dispose
für IEnumerator
aufruft, die IDisposable
implementiert hat. Ein paar andere kleine Features.var
), Abfrageausdrückedynamic
), generische Abweichung bei Delegierung und Schnittstelle, mehr COM-Unterstützung, benannte Argumente, Tuple-Datentyp und optionale Parameterawait
in catch
und finally
, Erweiterung Add
Methoden in Auflistungsinitialisierern.out
Parameterdeklarationen , - lokale Funktionen , binäre Literale, Zifferntrennzeichen und willkürliche asynchrone Rückgaben .unmanaged
generische Typeinschränkungen . ref
Neuzuweisung. Unsichere Verbesserungen: stackalloc
Initialisierung, nicht fixierte indizierte fixed
Puffer, benutzerdefinierte fixed
Anweisungen. Verbesserte Überladungsauflösung. Ausdrucksvariablen in Initialisierern und Abfragen. _==
_ und _!=
_ definiert für Tupel. Die Hintergrundfelder der Auto-Eigenschaften können jetzt durch Attribute als Ziel ausgewählt werden.IAsyncEnumerable<T>
_ Unterstützung, Bereiche und Standardschnittstellenmethoden.Was sind die richtigen Versionsnummern für C #? Was kam wann heraus? Warum kann ich keine Antworten zu C # 3.5 finden?
C # 3.5 gibt es nicht - die Ursache für Verwirrung ist, dass C # 3.0 in .NET 3.5 vorhanden ist. Die Sprache und das Framework werden jedoch unabhängig voneinander versioniert. Dies gilt auch für die CLR, die ab Version 2.0 für .NET 2.0 bis 3.5 verfügbar ist, und für .NET 4, das trotz Service Packs CLR 4.0 einführt. Die CLR in .NET 4.5 weist verschiedene Verbesserungen auf, die Versionsverwaltung ist jedoch unklar: An einigen Stellen wird sie möglicherweise als CLR 4.5 bezeichnet ( diese MSDN-Seite wird beispielsweise verwendet, um auf diese Weise darauf zu verweisen). Die Eigenschaft Environment.Version
meldet jedoch weiterhin 4.0.xxx.
Ab dem 3. Mai 2017 hat das C # -Sprachenteam einen Verlauf von C # -Versionen und -Funktionen auf dem Github-Repository erstellt: In C # -Sprachversionen hinzugefügte Funktionen . Es gibt auch eine Seite, die kommende und kürzlich implementierte Sprachfunktionen aufzeichnet .
Das größte Problem beim Umgang mit den Versionsnummern von C # ist die Tatsache, dass es nicht an eine Version von .NET Framework gebunden ist, was anscheinend auf die synchronisierten Versionen zwischen Visual Studio und .NET Framework zurückzuführen ist.
Die Version von C # ist tatsächlich an den Compiler gebunden, nicht an das Framework. In Visual Studio 2008 können Sie beispielsweise C # 3.0 schreiben und .NET Framework 2.0, 3.0 und 3.5 als Ziel verwenden. Die C # 3.0-Nomenklatur beschreibt die Version der Codesyntax und die unterstützten Funktionen auf dieselbe Weise wie ANSI C89, C90, C99 die Codesyntax/Funktionen für C.
Schauen Sie sich Mono an, und Sie werden sehen, dass Mono 2.0 (die meist implementierte Version 2.0 von .NET Framework aus den ECMA-Spezifikationen) die C # 3.0-Syntax und -Funktionen unterstützt.
Dies ist das Gleiche wie die meisten Antworten hier, ist jedoch der Einfachheit halber tabellarisch angeordnet und enthält der Vollständigkeit halber Visual Studio- und .NET-Versionen.
╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗
║ 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 ║
║ 8.0 ║ 2019 ║ ║ ║ Apr 2019 ║
╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝
Hinweis: Die .NET-Entwicklung ist heutzutage ziemlich unabhängig von VS, es gibt keine Korrelation zwischen den Versionen. Weitere Informationen finden Sie unter " .NET Framework-Versionen und Abhängigkeiten ".
C # 1. mit Visual Studio.NET
C # 2. mit Visual Studio 2005
C # 3. mit Visual Studio 2008
C # 4. mit Visual Studio 2010
C # 5. mit Visual Studio 2012
C # 6. mit Visual Studio 2015
C # 7. mit Visual Studio 2017
C # 8. mit Visual Studio 2019 (in der Vorschau)
VERSION_____
LANGUAGE SPECIFICATION______
Microsoft COMPILER
C # 1. / 1.2____
Dezember 2001?/ 2003?___________
Januar 2002?
C # 2.0_______
September 2005________________
November 2005?
C # 3.0_______
Mai 2006_____________________
November 2006?
C # 4.0_______
März 2009 (Entwurf)______________
April 2010?
C # 5.0; veröffentlicht mit .NET 4.5 im August 2012
C # 6.0; veröffentlicht mit .NET 4.6 2015
C # 7.0; veröffentlicht mit .NET 4.7 2017
C # -Versionsverlauf:
C # ist eine einfache und leistungsstarke objektorientierte Programmiersprache, die von Microsoft entwickelt wurde.
C # hat sich seit seiner ersten Veröffentlichung im Jahr 2002 stark weiterentwickelt. C # wurde mit .NET Framework 1.0 eingeführt.
In der folgenden Tabelle sind wichtige Funktionen aufgeführt, die in jeder Version von C # eingeführt wurden.
Die neueste Version von C # ist in C # -Versionen verfügbar.
Ich habe die meisten Versionen in dieser Tabelle zusammengefasst. Die einzigen fehlenden sollten ASP.NET Core-Versionen sein. Ich habe auch verschiedene Versionen von ASP.NET MVC hinzugefügt.
Beachten Sie, dass ASP.NET 5 als ASP.NET Core 1.0 umbenannt wurde und ASP.NET MVC 6 als ASP.NET Core MVC 1.0.0 umbenannt wurde. Ich glaube, dass diese Änderung irgendwann im Januar 2016 stattgefunden hat.
Ich habe das Veröffentlichungsdatum von ASP.NET 5 RC1 in die Tabelle aufgenommen, aber ich muss noch ASP.NET Core 1.0 und andere Kernversionen aufnehmen, da ich das genaue Veröffentlichungsdatum nicht finden konnte. Weitere Informationen zu den Veröffentlichungsterminen für ASP.NET Core finden Sie hier: Wann ist die Veröffentlichung von ASP.NET Core 1.0 (ASP.NET 5/vNext) geplant?
Sie können die neuesten C # -Versionen prüfen hier
Beim Vergleich der MSDN-Artikel "Was ist neu in der Sprache und im Compiler von C # 2.0?" und " Was ist neu in Visual C # 2005? " kann auf "C # major_version.minor_version" geschlossen werden "wird entsprechend der Versionsnummer des Compilers geprägt.
Es gibt C # 1.2 entsprechend .NET 1.1 und VS 20 und auch Visual C # .NET 20 .
Microsoft hat jedoch weiter aufgehört, die Nebenversionsnummern (nach dem Punkt) zu erhöhen oder andere als Nullen zu haben, 0
. Es ist jedoch zu beachten, dass C #, das .NET 3.5 entspricht, in msdn.Microsoft.com als "Visual C # 2008 Service Pack 1" bezeichnet wird.
Es gibt zwei parallele Namen: Nach der Versionsnummerierung in .NET/Compiler und nach der Visual Studio-Nummerierung.
C # 2. ist ein Synonym für Visual C # 2005
C # 3.0 entspricht (oder genauer gesagt kann es zielen):
Dies sind die Versionen von C # , die zum Zeitpunkt dieses Schreibens bekannt waren:
Dispose
für IEnumerator
aufruft, die IDisposable
implementiert hat. Ein paar andere kleine Features.var
), Abfrageausdrücke
- C # 3.5 So etwas gibt es nicht, C # 3.0 ist in .NET 3.5 vorhanden, bitte nicht verwechseln !!!
dynamic
), generische Abweichung bei Delegierung und Schnittstelle, mehr COM-Unterstützung, benannte Argumente, Tuple-Datentyp und optionale Parameterawait
in catch
und finally
, Erweiterung Add
Methoden in Auflistungsinitialisierern.out
Parameterdeklarationen , lokale Funktionen , binäre Literale, Zifferntrennzeichen und willkürliche asynchrone Rückgaben .unmanaged
generische Typeinschränkungen . ref
Neuzuweisung. Unsichere Verbesserungen: stackalloc
Initialisierung, nicht fixierte indizierte fixed
Puffer, benutzerdefinierte fixed
Anweisungen. Verbesserte Überladungsauflösung. Ausdrucksvariablen in Initialisierern und Abfragen. ==
und !=
für Tupel definiert. Die Hintergrundfelder der Auto-Eigenschaften können jetzt durch Attribute als Ziel ausgewählt werden.IAsyncEnumerable<T>
-Unterstützung, Bereiche und Standardschnittstellenmethoden.