Sdílet prostřednictvím


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.