5 Konformität
Die Konformität ist für die folgenden Zielgruppen von Interesse:
- Diejenigen, die C#-Implementierungen entwerfen, implementieren oder verwalten.
- Staatliche oder kommerzielle Einrichtungen, die C#-Implementierungen erwerben möchten.
- Testorganisationen, die eine C#-Konformitätstestsuite bereitstellen möchten.
- Programmierer, die Code von einer C#-Implementierung zu einer anderen portieren möchten.
- Lehrkräfte, die Standard C# lehren möchten.
- Autoren, die über Standard C# schreiben möchten.
Daher ist die Konformität am wichtigsten, und der Großteil dieser Spezifikation zielt darauf ab, die Merkmale anzugeben, die C#-Implementierungen und C#-Programme entsprechen.
Der Text in dieser Spezifikation, der Anforderungen angibt, gilt als normativ. Alle anderen Texte in dieser Spezifikation sind informativ, d. h. nur zu Informationszwecken. Sofern nicht anders angegeben, ist der gesamte Text normativ. Normativer Text wird weiter in erforderliche und bedingte Kategorien unterteilt. Bedingt normativer Text gibt ein Feature und seine Anforderungen an, bei denen das Feature optional ist. Wenn dieses Feature jedoch bereitgestellt wird, müssen ihre Syntax und Semantik genau wie angegeben sein.
Das nicht definierte Verhalten wird in dieser Spezifikation nur durch die Wörter "nicht definiertes Verhalten" angegeben.
Ein streng konformes Programm darf nur die in dieser Spezifikation angegebenen Sprachfunktionen verwenden, sofern erforderlich. (Dies bedeutet, dass ein streng konformes Programm kein bedingt normatives Merkmal verwenden kann.) Sie darf keine Ausgabe produzieren, die von nicht angegebenen, nicht definierten oder implementierungsdefinierten Verhaltensweisen abhängig ist.
Eine konforme Implementierung von C# akzeptiert alle streng konformen Programme.
Eine konforme Implementierung von C# muss alle Typen, Werte, Objekte, Eigenschaften, Methoden und Programmsyntax und Semantik bereitstellen und unterstützen, die in den normativen (aber nicht den bedingt normativen) Teilen dieser Spezifikation beschrieben werden.
Eine konforme Implementierung von C# interpretiert Zeichen in Übereinstimmung mit dem Unicode-Standard. Konforme Implementierungen akzeptieren Kompilierungseinheiten, die mit dem UTF-8-Codierungsformular codiert sind.
Eine konforme Implementierung von C# darf die Quelle, die eine #error Vorverarbeitungsdirektive enthält, nicht erfolgreich übersetzen, es sei denn, sie ist Teil einer Gruppe, die von der bedingten Kompilierung übersprungen wird.
Eine konforme Implementierung von C# erzeugt mindestens eine Diagnosemeldung, wenn das Quellprogramm gegen eine Syntaxregel verstößt oder eine negative Anforderung (definiert als "muss" oder "darf nicht" oder "Fehler" oder "Warnungsanforderung" definiert ist), es sei denn, diese Anforderung ist mit den Wörtern "Keine Diagnose erforderlich" gekennzeichnet.
Eine konforme Implementierung von C# darf zusätzliche Typen, Werte, Objekte, Eigenschaften und Methoden bereitstellen, die über die in dieser Spezifikation beschriebenen hinausgehen, vorausgesetzt, sie ändern nicht das Verhalten eines streng konformen Programms. Konforme Implementierungen sind erforderlich, um Programme zu diagnostizieren, die Erweiterungen verwenden, die gemäß dieser Spezifikation schlecht gebildet sind. Allerdings können sie solche Programme kompilieren und ausführen. (Die Möglichkeit, Erweiterungen zu haben, bedeutet, dass eine konforme Implementierung keine anderen Bezeichner als diejenigen reserviert, die in dieser Spezifikation explizit reserviert sind.)
Eine konforme Implementierung von C# wird von einem Dokument begleitet, das alle implementierungsdefinierte Merkmale und alle Erweiterungen definiert.
Eine konforme Implementierung von C# unterstützt die in Anhang C dokumentierte Klassenbibliothek. Diese Bibliothek ist in dieser Spezifikation durch Verweis enthalten.
Ein konformes Programm ist ein Programm , das für eine konforme Implementierung akzeptabel ist. (Ein solches Programm darf Erweiterungen oder bedingt normative Merkmale enthalten.)
ECMA C# draft specification