Vztahy mezi funkcemi jazyka a typy knihoven
Definice jazyka C# vyžaduje, aby měla standardní knihovna určité typy a určité přístupné členy těchto typů. Kompilátor generuje kód, který používá tyto požadované typy a členy pro mnoho různých jazykových funkcí. Z tohoto důvodu jsou verze jazyka C# podporovány pouze pro odpovídající verzi .NET a novější. Tím zajistíte správné chování za běhu a dostupnost všech požadovaných typů a členů.
Tato závislost na funkcích standardní knihovny byla od své první verze součástí jazyka C#. V této verzi jsme zahrnuli příklady:
- Exception – používá se pro všechny výjimky generované kompilátorem.
- String- synonymum .
string
- Int32- synonymum .
int
Tato první verze byla jednoduchá: kompilátor a standardní knihovna se odeslaly dohromady a každá měla pouze jednu verzi.
Další verze jazyka C# občas přidaly do závislostí nové typy nebo členy. Mezi příklady patří: INotifyCompletion, CallerFilePathAttributea CallerMemberNameAttribute. Jazyk C# 7.0 přidal závislost na ValueTuple implementaci funkce jazyka řazených kolekcí členů. C# 8 vyžaduje System.Index a System.Range pro rozsahy a indexy mimo jiné funkce. Každá nová verze může přidat další požadavky.
Tým pro návrh jazyka pracuje na minimalizaci plochy typů a členů požadovaných v kompatibilní standardní knihovně. Tento cíl je vyvážen proti čistému návrhu, ve kterém se nové funkce knihovny bezproblémově začleňují do jazyka. V budoucích verzích jazyka C# budou k dispozici nové funkce, které vyžadují nové typy a členy ve standardní knihovně. Nástroje kompilátoru jazyka C# jsou teď oddělené od cyklu vydávání knihoven .NET na podporovaných platformách.