5 Shoda
Shoda je zajímavá pro následující cílové skupiny:
- Ty, které navrhují, implementují nebo udržují implementace jazyka C#.
- Vládní nebo komerční subjekty, které chtějí získat implementace jazyka C#.
- Testování organizací, které chtějí poskytnout sadu testů shody jazyka C#.
- Programátoři, kteří chtějí portovat kód z jedné implementace jazyka C# do jiné.
- Vyučující, kteří chtějí učit standardní jazyk C#.
- Autoři, kteří chtějí psát o standardu C#.
Proto je shoda nejdůležitější a hromadná část této specifikace je zaměřena na určení charakteristik, díky kterým implementace jazyka C# a programy jazyka C# odpovídají těmto vlastnostem.
Text v této specifikaci, který určuje požadavky, se považuje za normativní. Všechny ostatní texty v této specifikaci jsou informativní. To znamená pouze pro účely informací. Pokud není uvedeno jinak, je veškerý text normativní. Normativní text je dále rozdělen do povinných a podmíněných kategorií. Podmíněně normativní text určuje funkci a její požadavky, kde je tato funkce volitelná. Pokud je však tato funkce poskytnuta, její syntaxe a sémantika musí být přesně specifikovaná.
Nedefinované chování je uvedené v této specifikaci pouze slovy "nedefinované chování".
Striktní program použije pouze ty funkce jazyka uvedeného v této specifikaci, jak je požadováno. (To znamená, že striktně vyhovující program nemůže používat žádnou podmíněně normativní funkci.) Nevytvářejí výstup závislý na žádném nedefinovaném, nedefinovaném nebo implementovaném chování.
V souladu s implementací jazyka C# se přijme jakýkoliv striktně vyhovující program.
Odpovídající implementace jazyka C# poskytuje a podporuje všechny typy, hodnoty, objekty, vlastnosti, metody a syntaxi programu a sémantiku popsané v normativních (ale ne podmíněně normativních) částech této specifikace.
Odpovídající implementace jazyka C# interpretuje znaky v souladu se standardem Unicode. Odpovídající implementace přijímají kompilační jednotky kódované ve formuláři kódování UTF-8.
Odpovídající implementace jazyka C# nesmí úspěšně přeložit zdroj obsahující direktivu předběžného zpracování #error, pokud není součástí skupiny přeskočenou podmíněnou kompilací.
V souladu s implementací jazyka C# se vytvoří alespoň jedna diagnostická zpráva, pokud zdrojový program porušuje jakékoli pravidlo syntaxe nebo jakýkoli negativní požadavek (definovaný jako "musí" nebo "nesmí" nebo "chyba" nebo "upozornění"), pokud není tento požadavek označen slovy "není vyžadována žádná diagnostika".
Odpovídající implementaci jazyka C# je povoleno poskytovat další typy, hodnoty, objekty, vlastnosti a metody nad rámec těch, které jsou popsány v této specifikaci, za předpokladu, že nemění chování žádného přísně vyhovujícího programu. K diagnostice programů používajících přípony, které jsou podle této specifikace vytvořeny, jsou vyžadovány odpovídající implementace. Když to ale uděláte, můžou tyto programy zkompilovat a spouštět. (Schopnost mít rozšíření znamená, že odpovídající implementace si vyhrazuje žádné jiné identifikátory než ty, které jsou explicitně vyhrazeny v této specifikaci.)
K odpovídajícímu provedení jazyka C# musí být připojen dokument, který definuje všechny vlastnosti definované implementací a všechna rozšíření.
Odpovídající provádění jazyka C# podporuje knihovnu tříd zdokumentovanou v příloze C. Tato knihovna je součástí této specifikace.
Vyhovující program je takový, který je přijatelný pro vyhovující implementaci. (Takový program může obsahovat rozšíření nebo podmíněné normativní funkce.)
ECMA C# draft specification