Freigeben über


Integrierte Typen (C#-Referenz)

In der folgenden Tabelle werden die in C# integrierten Werttypen aufgelistet:

C#-Typ-Schlüsselwort .NET-Typ
bool System.Boolean
byte System.Byte
sbyte System.SByte
char System.Char
decimal System.Decimal
double System.Double
float System.Single
int System.Int32
uint System.UInt32
nint System.IntPtr
nuint System.UIntPtr
long System.Int64
ulong System.UInt64
short System.Int16
ushort System.UInt16

In der folgenden Tabelle werden die in C# integrierten Verweistypen aufgelistet:

C#-Typ-Schlüsselwort .NET-Typ
object System.Object
string System.String
delegate System.Delegate
dynamic System.Object

In den vorherigen Tabellen sind die meisten C#-Typstichwörter aus der linken Spalte Aliase 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 delegate Schlüsselwort ist ein integriertes Referenztyp-Schlüsselwort, das einen typ deklariert, der von System.Delegate. Im Gegensatz zu den anderen integrierten Typstichwörtern delegate handelt es sich nicht um einen Alias für einen bestimmten .NET-Typ. Stattdessen werden benutzerdefinierte Typen deklariert, die vom abstrakten System.Delegate Typ abgeleitet sind. In ähnlicher Weise stellt das Laufzeitbindungsverhalten dar, dynamic anstatt ein direkter Alias für einen bestimmten .NET-Typ zu sein.

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 zu System.Span<E>
  • Von einem eindimensionalen Array mit dem Elementtyp E zu System.ReadOnlySpan<U>, wenn für E eine Kovarianzumwandlung oder eine Identitätsumwandlung zu U erfolgt.
  • Von System.Span<E> zu System.ReadOnlySpan<U>, wenn für E eine Kovarianzkonvertierung oder eine Identitätskonvertierung zu U erfolgt.
  • Von System.ReadOnlySpan<E> zu System.ReadOnlySpan<U>, wenn für E eine Kovarianzkonvertierung oder eine Identitätskonvertierung zu U erfolgt.
  • Von string bis System.ReadOnlySpan<char>

Der Compiler ignoriert niemals eine benutzerdefinierte Konvertierung, wenn eine entsprechende implizite Span-Konvertierung vorhanden ist. Implizite Span-Konvertierungen können auf den Empfängerparameter von Erweiterungsmitgliedern angewendet werden. Der Empfängerparameter wird durch das extension Schlüsselwort in einem Erweiterungselement angegeben. Der Empfängerparameter ist der erste Parameter einer Erweiterungsmethode mit dem this Modifizierer. Implizite Span-Konvertierungen werden für Methodengruppenkonvertierungen nicht berücksichtigt.

Siehe auch