Ingebouwde typen (C#-referentie)
De volgende tabel bevat de ingebouwde C#--waarde typen:
De volgende tabel bevat de ingebouwde C#-verwijzingstypen:
C#-type trefwoord | .NET-type |
---|---|
object |
System.Object |
string |
System.String |
delegate |
System.Delegate |
dynamic |
System.Object |
In de voorgaande tabellen is het C#-type trefwoord uit de linkerkolom (behalve delegate en dynamic) een alias voor het bijbehorende .NET-type. Ze zijn uitwisselbaar. De volgende declaraties declareren bijvoorbeeld variabelen van hetzelfde type:
int a = 123;
System.Int32 b = 123;
Het dynamic
type is vergelijkbaar met object
. De belangrijkste verschillen zijn:
- Bewerkingen op een
dynamic
-expressie zijn tijdens runtime gebonden, niet tijdens het compileren. - U kunt
new dynamic()
niet gebruiken. - U kunt een type niet afleiden van het
dynamic
type.
Het delegate
trefwoord declareert een type dat is afgeleid van System.Delegate.
System.Delegate
type is een abstract type.
Het void
trefwoord vertegenwoordigt het ontbreken van een type. U gebruikt dit als het retourtype van een methode die geen waarde retourneert.
De C#-taal bevat gespecialiseerde regels voor de typen System.Span<T> en System.ReadOnlySpan<T>. Deze typen worden niet geclassificeerd als ingebouwde typen, omdat er geen C#-trefwoorden zijn die overeenkomen met deze typen. De C#-taal definieert impliciete conversies van matrixtypen en het tekenreekstype naar Span<T>
en ReadOnlySpan<T>
. Deze conversies integreren Span
typen in natuurlijkere programmeerscenario's. De volgende conversies worden gedefinieerd als impliciete spanconversies:
- Van een enkeledimensionale matrix met elementtype
E
totSystem.Span<E>
- Van elke enkeldimensionale array met elementtype
E
naarSystem.ReadOnlySpan<U>
, wanneerE
een covariantieconversie of een identiteitsconversie naarU
heeft - Van
System.Span<E>
totSystem.ReadOnlySpan<U>
, wanneerE
een covariantie-overgang of een identiteitsovergang naarU
heeft. - Van
System.ReadOnlySpan<E>
totSystem.ReadOnlySpan<U>
, wanneerE
ofwel een covariantieconversie of een identiteitsconversie naarU
heeft - Van
string
totSystem.ReadOnlySpan<char>
De compiler negeert nooit een door de gebruiker gedefinieerde conversie wanneer een toepasselijke impliciete spanconversie bestaat. Impliciete spanconversies kunnen worden toegepast op het eerste argument van extensiemethoden, de parameter met de this
modifier. Impliciete spanconversies worden niet meegenomen voor methodegroepconversies.