5 Conformance
Conformiteit is van belang voor de volgende doelgroepen:
- Degenen die C#-implementaties ontwerpen, implementeren of onderhouden.
- Overheids- of commerciële entiteiten die C#-implementaties willen aanschaffen.
- Testorganisaties die een C#-testpakket voor conformiteit willen bieden.
- Programmeurs die code willen overzetten van de ene C#-implementatie naar de andere.
- Docenten die Standaard C# willen leren.
- Auteurs die willen schrijven over Standard C#.
Daarom is conformiteit het belangrijkst en het grootste deel van deze specificatie is gericht op het opgeven van de kenmerken die C#-implementaties en C#-programma's conform maken.
De tekst in deze specificatie die vereisten aangeeft, wordt als normatief beschouwd. Alle andere tekst in deze specificatie is informatief; dat wil dus alleen voor informatiedoeleinden. Tenzij anders vermeld, is alle tekst normatief. Normatieve tekst wordt verder onderverdeeld in vereiste en voorwaardelijke categorieën. Voorwaardelijk normatieve tekst geeft een functie en de vereisten aan waar de functie optioneel is. Als deze functie echter wordt opgegeven, moeten de syntaxis en semantiek ervan exact zoals opgegeven zijn.
Niet-gedefinieerd gedrag wordt alleen in deze specificatie aangegeven door de woorden 'niet-gedefinieerd gedrag'.
Een strikt conform programma gebruikt alleen de functies van de taal die in deze specificatie is opgegeven als vereist. (Dit betekent dat een strikt conform programma geen voorwaardelijk normatieve functie kan gebruiken.) Het produceert geen uitvoer die afhankelijk is van een niet-gespecificeerd, niet-gedefinieerd of implementatiegedefinieerd gedrag.
Een conforme implementatie van C# accepteert alle strikt conforme programma's.
Een conforme implementatie van C# biedt en ondersteunt alle typen, waarden, objecten, eigenschappen, methoden en programmasyntaxis en semantiek die worden beschreven in de normatieve (maar niet de voorwaardelijk normatieve) onderdelen in deze specificatie.
Een conforme implementatie van C# interpreteert tekens in overeenstemming met de Unicode-standaard. Conforme implementaties accepteert compilatie-eenheden die zijn gecodeerd met het coderingsformulier UTF-8.
Een conforme implementatie van C# vertaalt bron met een #error voorverwerkingsrichtlijn niet, tenzij deze deel uitmaakt van een groep die wordt overgeslagen door voorwaardelijke compilatie.
Een conforme implementatie van C# produceert ten minste één diagnostisch bericht als het bronprogramma een regel van syntaxis schendt, of een negatieve vereiste (gedefinieerd als een "shall" of "not" of "error" of "waarschuwing" vereiste), tenzij die vereiste is gemarkeerd met de woorden "geen diagnose is vereist".
Een conforme implementatie van C# is toegestaan om aanvullende typen, waarden, objecten, eigenschappen en methoden te bieden buiten de typen, objecten, eigenschappen en methoden die in deze specificatie worden beschreven, mits ze het gedrag van een strikt conform programma niet wijzigen. Conforme implementaties zijn vereist voor het diagnosticeren van programma's die gebruikmaken van extensies die slecht zijn gevormd volgens deze specificatie. Als u dit hebt gedaan, kunnen ze dergelijke programma's echter compileren en uitvoeren. (De mogelijkheid om extensies te hebben impliceert dat een conforme implementatie geen andere id's reserveert dan die die expliciet zijn gereserveerd in deze specificatie.)
Een conforme implementatie van C# wordt vergezeld van een document dat alle door de implementatie gedefinieerde kenmerken en alle uitbreidingen definieert.
Een conforme uitvoering van C# ondersteunt de in bijlage C beschreven klassebibliotheek. Deze bibliotheek is opgenomen in deze specificatie.
Een conform programma is een programma dat acceptabel is voor een conforme implementatie. (Een dergelijk programma mag extensies of voorwaardelijk normatieve functies bevatten.)
ECMA C# draft specification