Integrierte Typen (C#-Referenz)
In der folgenden Tabelle werden die in C# integrierten Werttypen aufgelistet:
In der folgenden Tabelle werden die in C# integrierten Verweistypen aufgelistet:
C#-Typschlüsselwort | .NET-Typ |
---|---|
object |
System.Object |
string |
System.String |
delegate |
System.Delegate |
dynamic |
System.Object |
In den Tabellen oben ist das C#-Typschlüsselwort aus der linken Spalte (mit Ausnahme von delegate sowie dynamic) ein Alias für den entsprechenden .NET-Typ. Sie sind austauschbar. Die folgenden Deklarationen deklarieren beispielsweise Variablen desselben Typs:
int a = 123;
System.Int32 b = 123;
Der dynamic
Typ ähnelt object
. Die wichtigsten Unterschiede sind:
- Vorgänge für einen
dynamic
Ausdruck sind zur Laufzeit gebunden, nicht zur Kompilierungszeit. - Sie können
new dynamic()
nicht verwenden. - Sie können keinen Typ vom typ
dynamic
ableiten.
Das schlüsselwort delegate
deklariert einen von System.Delegateabgeleiteten Typ. System.Delegate
Typ ist ein abstrakter Typ.
Das schlüsselwort void
stellt das Fehlen eines Typs dar. Sie verwenden sie als Rückgabetyp einer Methode, die keinen Wert zurückgibt.
Die C#-Sprache enthält spezielle Regeln für die typen System.Span<T> und System.ReadOnlySpan<T>. Diese Typen werden nicht als integrierte Typen klassifiziert, da es keine C#-Schlüsselwörter gibt, die diesen Typen entsprechen. Die C#-Sprache definiert implizite Konvertierungen von Arraytypen und vom Zeichenfolgentyp in Span<T>
und ReadOnlySpan<T>
. Diese Konvertierungen integrieren Span
Typen in natürlichere Programmierszenarien. Die folgenden Konvertierungen werden als implicit span conversions (implizite Span-Konvertierungen) definiert:
- Von einem eindimensionalen Array mit Elementtyp
E
zuSystem.Span<E>
- Von einem eindimensionalen Array mit dem Elementtyp
E
zuSystem.ReadOnlySpan<U>
, wenn fürE
eine Kovarianzumwandlung oder eine Identitätsumwandlung zuU
erfolgt. - Von
System.Span<E>
zuSystem.ReadOnlySpan<U>
, wenn fürE
eine Kovarianzkonvertierung oder eine Identitätskonvertierung zuU
erfolgt. - Von
System.ReadOnlySpan<E>
zuSystem.ReadOnlySpan<U>
, wenn fürE
eine Kovarianzkonvertierung oder eine Identitätskonvertierung zuU
erfolgt. - Von
string
bisSystem.ReadOnlySpan<char>
Der Compiler ignoriert niemals eine benutzerdefinierte Konvertierung, wenn eine entsprechende implizite Span-Konvertierung vorhanden ist. Implizite Span-Konvertierungen können auf das erste Argument der -Erweiterungsmethodenangewendet werden, dem Parameter mit dem this
-Modifizierer. Implizite Span-Konvertierungen werden für Methodengruppenkonvertierungen nicht berücksichtigt.