Willkommen im offiziellen Repo für C#-Sprachdesign. Hier werden neue C#-Sprachfunktionen entwickelt, übernommen und spezifiziert.
C# wird vom C# Language Design Team (LDT) in enger Abstimmung mit dem Roslyn-Projekt entworfen, das die Sprache implementiert.
Sie finden:
Wenn Sie oben Fehler oder Mängel entdecken, hinterlassen Sie bitte ein Issue, um diese anzusprechen, oder noch besser: eine Pull-Anfrage, um sie zu beheben.
Neue Funktionsvorschläge stellen Sie jedoch bitte zur Diskussion und reichen Sie einen Vorschlag nur dann als Issue oder Pull Request ein, wenn Sie von einem Mitglied des Sprachdesign-Teams (einem „Champion“) dazu aufgefordert werden.
Der komplette Designprozess wird hier beschrieben. Eine kürzere Übersicht finden Sie weiter unten.
Die Debatte über Sprachfunktionen findet in diesem Repo in Form von Diskussionen statt.
Wenn Sie eine Funktion vorschlagen, aktuelle Designnotizen oder Vorschläge usw. diskutieren möchten, öffnen Sie bitte ein neues Diskussionsthema.
Diskussionen, die kurz sind und sich auf das Thema konzentrieren, werden viel eher gelesen. Wenn Sie Kommentar Nummer fünfzig hinterlassen, ist die Wahrscheinlichkeit groß, dass ihn nur wenige Leute lesen. Um die Diskussionen einfacher zu steuern und von ihnen zu profitieren, beachten Sie bitte einige Faustregeln:
Sprachvorschläge, die das Auftreten einer bestimmten Syntax verhindern, können mit einem Roslyn-Analysator erreicht werden. Vorschläge, die bestehende Syntax nur optional illegal machen, werden vom Sprachdesign-Komitee abgelehnt, um eine erhöhte Sprachkomplexität zu verhindern.
Wenn ein Mitglied des C#-LDM feststellt, dass ein Vorschlag die Prüfung durch das breitere Team verdient, kann er ihn unterstützen, was bedeutet, dass er ihn zum C#-Sprachdesign-Meeting einbringt. Vorschläge werden immer in verlinkten Diskussionen besprochen, nicht in der Champion-Ausgabe. Wir haben diese Richtlinie nicht immer befolgt, daher werden viele Championthemen darüber diskutiert; Wir sperren jetzt Probleme, um zu verhindern, dass neue Diskussionen darüber stattfinden. Zu jeder Champion-Ausgabe gibt es einen Diskussionslink.
Vorschläge entstehen als Ergebnis von Entscheidungen in Sprachdesign-Meetings, die auf Diskussionen, Experimenten und Offline-Designarbeit basieren.
In vielen Fällen wird es notwendig sein, einen Prototyp einer Funktion zu implementieren und zu teilen, um das richtige Design zu finden und letztendlich zu entscheiden, ob die Funktion übernommen werden soll. Prototypen helfen dabei, sowohl Implementierungs- als auch Benutzerfreundlichkeitsprobleme einer Funktion zu erkennen. Ein Prototyp sollte in einem Fork des Roslyn-Repos implementiert werden und die folgende Messlatte erfüllen:
Nach der Genehmigung sollte eine Funktion vollständig in Roslyn implementiert und in der Sprachspezifikation vollständig spezifiziert sein. Anschließend wird der Vorschlag in den entsprechenden Ordner für eine abgeschlossene Funktion verschoben, z. B. C# 7.1-Vorschläge.
HAFTUNGSAUSSCHLUSS : Ein aktiver Vorschlag wird derzeit für die Aufnahme in eine zukünftige Version der Programmiersprache C# geprüft, es kann jedoch nicht garantiert werden, dass er letztendlich in die nächste oder eine andere Version der Sprache aufgenommen wird. Ein Vorschlag kann jederzeit in jeder Phase des oben genannten Prozesses auf der Grundlage des Feedbacks des Designteams, der Community, der Codeprüfer oder der Tests verschoben oder abgelehnt werden.
Wir haben verschiedene Meilensteine für Probleme im Repo:
Language Design Meetings (LDMs) werden vom LDT und gelegentlich eingeladenen Gästen abgehalten und in Design Meeting Notes im Besprechungsordner dokumentiert, die nach Jahr in Ordnern organisiert sind. Die Lebensdauer einer Design-Meeting-Notiz wird in Meetings/README.md beschrieben. In LDMs werden Entscheidungen über zukünftige C#-Versionen getroffen, einschließlich der Vorschläge, an denen gearbeitet werden soll, wie die Vorschläge weiterentwickelt werden und ob und wann sie übernommen werden.
Die aktuelle ECMA-334-Spezifikation finden Sie in Markdown-Form im C# Language Standard-Repository.
Die Referenzimplementierung der C#-Sprache finden Sie im Roslyn-Repository. Dieses Repository verfolgt auch den Implementierungsstatus für Sprachfunktionen. Bis vor kurzem wurden dort auch Artefakte des Sprachdesigns verfolgt. Bitte planen Sie etwas Zeit ein, während wir aktive Vorschläge bearbeiten.