A nyelvi funkciók és a kódtártípusok közötti kapcsolatok
A C#-nyelv definíciója megköveteli, hogy egy szabványos kódtár bizonyos típusokkal és bizonyos akadálymentes tagokkal rendelkezzen ezeken a típusokon. A fordító olyan kódot hoz létre, amely ezeket a szükséges típusokat és tagokat használja számos különböző nyelvi funkcióhoz. Ezért a C#-verziók csak a megfelelő .NET-verzió és újabb verziók esetében támogatottak. Ez biztosítja a megfelelő futásidejű viselkedést, valamint az összes szükséges típus és tag rendelkezésre állását.
Ez a standard kódtár-funkcióktól való függőség az első verzió óta a C# nyelv része. Ebben a verzióban a következő példák szerepelnek:
- Exception - az összes fordító által létrehozott kivételhez használatos.
- String - szinonimája
string
. - Int32 - szinonimája
int
.
Az első verzió egyszerű volt: a fordító és a standard kódtár együtt lett szállítva, és mindegyiknek csak egy verziója volt.
A C# későbbi verziói időnként új típusokat vagy tagokat adtak hozzá a függőségekhez. Ilyenek például a következők: INotifyCompletion, CallerFilePathAttributeés CallerMemberNameAttribute. A C# 7.0 hozzáadta a függőséget ValueTuple a tuples nyelvi funkció implementálásához. A C# 8 többek között tartományokat és System.Range indexeket igényel System.Index és igényel. Minden új verzió további követelményeket is tartalmazhat.
A nyelvtervező csapat azon dolgozik, hogy minimálisra csökkentse a megfelelő szabványos kódtárban megkövetelt típusok és tagok felületét. Ez a cél egy olyan tiszta kialakítással van elosztva, amelyben az új kódtárfunkciók zökkenőmentesen beépülnek a nyelvbe. A C# jövőbeli verzióiban új funkciók jelennek meg, amelyek új típusokat és tagokat igényelnek egy standard kódtárban. A C# fordítóeszközök mostantól függetlenítve vannak a támogatott platformokon található .NET-kódtárak kiadási ciklusától.