Dela via


5 Överensstämmelse

Överensstämmelse är av intresse för följande målgrupper:

  • De som utformar, implementerar eller underhåller C#-implementeringar.
  • Statliga eller kommersiella enheter som vill köpa C#-implementeringar.
  • Testa organisationer som vill tillhandahålla en C#-överensstämmelsetestsvit.
  • Programmerare som vill portera kod från en C#-implementering till en annan.
  • Lärare som vill undervisa i Standard C#.
  • Författare som vill skriva om Standard C#.

Därför är överensstämmelse viktigast, och huvuddelen av den här specifikationen syftar till att ange de egenskaper som gör att C#-implementeringar och C#-program överensstämmer med dem.

Texten i den här specifikationen som anger krav anses vara normativ. All annan text i den här specifikationen är informativ, dvs. endast i informationssyfte. Om inget annat anges är all text normativ. Normativ text delas ytterligare in i obligatoriska och villkorsstyrda kategorier. Villkorsstyrd normativ text anger en funktion och dess krav där funktionen är valfri. Men om den funktionen tillhandahålls ska dess syntax och semantik vara exakt som angetts.

Odefinierat beteende anges endast i den här specifikationen av orden "odefinierat beteende".

Ett strikt överensstämmelseprogram ska endast använda de funktioner i språket som anges i denna specifikation som nödvändiga. (Det innebär att ett strikt överensstämmelseprogram inte kan använda någon villkorsstyrd normativ funktion.) Den får inte generera utdata som är beroende av något ospecificerat, odefinierat eller implementeringsdefinierat beteende.

En efterlevnadsimplementering av C# ska godkänna alla strikt överensstämmande program.

En överensstämmande implementering av C# ska tillhandahålla och stödja alla typer, värden, objekt, egenskaper, metoder och programsyntax och semantik som beskrivs i de normativa (men inte villkorligt normativa) delarna i denna specifikation.

En efterföljande implementering av C# ska tolka tecken i enlighet med Unicode Standard. I enlighet med implementeringarna ska kompileringsenheter som kodas med UTF-8-kodningsformuläret accepteras.

En efterlevnadsimplementering av C# får inte översätta källan som innehåller ett #error förbearbetningsdirektiv såvida det inte ingår i en grupp som hoppas över av villkorsstyrd kompilering.

En överensstämmande implementering av C# ska generera minst ett diagnostikmeddelande om källprogrammet bryter mot någon syntaxregel eller något negativt krav (definierat som ett "ska" eller "ska inte" eller "fel" eller "varning" krav), såvida inte det kravet markeras med orden "ingen diagnostik krävs".

En implementering av C# är tillåten att tillhandahålla ytterligare typer, värden, objekt, egenskaper och metoder utöver de som beskrivs i den här specifikationen, förutsatt att de inte ändrar beteendet för något strikt överensstämmande program. Implementeringar som uppfyller kraven krävs för att diagnostisera program som använder tillägg som är dåligt utformade enligt den här specifikationen. Efter att ha gjort det kan de dock kompilera och köra sådana program. (Möjligheten att ha tillägg innebär att en överensstämmande implementering inte reserverar några andra identifierare än de som uttryckligen reserveras i den här specifikationen.)

En förenlig tillämpning av C# ska åtföljas av ett dokument som definierar alla implementeringsdefinierade egenskaper och alla tillägg.

Ett genomförande av C# skall vara förenligt med det klassbibliotek som dokumenteras i bilaga C. Det här biblioteket ingår i referensen i den här specifikationen.

Ett överensstämmande program är ett program som är acceptabelt för en implementering som överensstämmer. (Ett sådant program får innehålla tillägg eller villkorsstyrd normativa funktioner.)