English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Datentypen

C# ist eine stark typisierte Sprache. Dies bedeutet, dass wir eine Variablenart deklarieren müssen, die angibt, welchen Werttyp der Variable gespeichert werden soll, z.B. Ganzzahl, Fließkomma, Dezimal, Text usw.

Nachfolgend wurden Variablen verschiedener DatenTypen deklariert und initialisiert.

string stringVar = "Hello World!!";
int intVar = 100;
float floatVar = 10.2f;
char charVar = 'A';
bool boolVar = true;

C# unterscheidet hauptsächlich zwischen Werttypen und Referenztypen. Werttypen umfassen einfache Typen (z.B. int, float, bool und char), Enum-Typen, Strukturtypen und Nullable-Werttypen. Referenztypen umfassen Klassen-Typen, Interface-Typen, Delegatentypen und Array-Typen. In Kapitel werden die Werttypen und Referenztypen im Detail behandelt.

Vorgegebene DatenTypen in C#

C# enthält einige vorgegebene Werttypen und Referenztypen. Der folgende Tisch zeigt die vorgegebenen DatenTypen:

TypBeschreibungBereichSuffix
byte8 Bitunsignierte Ganzzahlentypenbis 255
sbyte8 Bitzeichenbehaftete Ganzzahlentypen-128 bis 127
short16 Bitzeichenbehaftete Ganzzahlentypen-32,768 bis 32,767
ushort 16 Bitunsignierte Ganzzahlentypenbis 65,535
int32 Bitzeichenbehaftete Ganzzahlentypen-2,147,483,648

bis

2,147,483,647


uint32 Bitunsignierte Ganzzahlentypenbis 4,294,967,295u
long64 Bitzeichenbehaftete Ganzzahlentypen-9,223,372,036,854,775,808
bis
9,223,372,036,854,775,807
l
ulong64 Bitunsignierte Ganzzahlentypenbis 18,446,744,073,709,551,615ul
float32 Bitgenaue Single-Fließkommazahlen-3.402823e38 bis 3.402823e38f
double64 Bitgenaue Double-Fließkommazahlen-1.79769313486232e308 bis 1.79769313486232e308d
decimal128 Bitgenaue Dezimalwerte,28-29 gültige Stellen(+ oder-)1.0 x 10e-28  bis 7.9 x 10e28m
char16 Bit Unicode Zeichenjeder gültige Zeichen, zum Beispiel a,*, \x0058 (hex), oder\u0058 (Unicode)
bool8 Bitlogisch true/false WertTrue oder False
objectBasisklasse aller Typen

string

Unicode-Zeichenfolge



DateTimestellt Datum und Uhrzeit dar0:00:00am 1/1/01
bis
11:59:59pm 12/31/9999

Wie im obigen Tisch gezeigt, enthält jeder Datentyp (außer Strings und Objekten) einen Wertebereich. Gibt der Wert den zulässigen Bereich des Datentyps超出, gibt der Compiler einen Fehler aus. Zum Beispiel ist der Bereich des int-Datentyps-2,147,483,648bis2,147,483,647. Daher gibt der Compiler einen Fehler aus, wenn der zugewiesene Wert nicht in diesem Bereich liegt.

    Beispiel: Kompilationsfehler

// Kompilationsfehler: Der Typ 'long' kann nicht implizit in 'int' umgewandelt werden.
int i = 21474836470;

Unsignierte Ganzzahlen, long, float, double und decimal-Werte müssen entsprechend mit u, l, f, d und m enden.

uint ui = 100u;
float fl = 10.2f;
long l = 45755452222222l;
ulong ul = 45755452222222ul;
double d = 11452222.555d;
decimal mon = 1000.15m;

Alias und .NET-Typen

Die vorgegebenen Datentypen sind Alias für die .NET-Typen (CLR-Klassen)namen. Der folgende Tisch zeigt die Aliase der vorgegebenen Datentypen und die entsprechenden .NET-Klassennamen.

Alias.NET-TypenTyp
byteSystem.Bytestruct
sbyteSystem.SBytestruct
intSystem.Int32struct
uintSystem.UInt32struct
shortSystem.Int16struct
ushortSystem.UInt16struct
longSystem.Int64struct
ulongSystem.UInt64struct
floatSystem.Singlestruct
doubleSystem.Doublestruct
charSystem.Charstruct
boolSystem.Booleanstruct
objectSystem.ObjectClass
stringSystem.StringClass
decimalSystem.Decimalstruct
DateTimeSystem.DateTimestruct

Das bedeutet, dass es egal ist, ob Sie int oder Int definieren32alle Variablen sind gleich.

int i = 345;
Int32 i = 345;// wie oben

Typumwandlung

Der Wert bestimmter Datentypen wird in C# automatisch in andere Datentypen umgewandelt. Dies wird als implizite Konvertierung bezeichnet.

int i = 345;
float f = i;
Console.WriteLine(f); //Ausgabe:345

Im obigen Beispiel wird der Wert der Ganzzahlvariable i der Variable f des Typs float zugewiesen, da diese Konvertierung in C# vorgedefiniert ist.

Nachstehend finden Sie die Tabelle der impliziten Datentypkonvertierungen.

implizite Konvertierungbis
sbyteshort, int, long, float, double decimal
byteshort, ushort, int, uint, long, ulong, float, double, decimal
shortint, long, float, double oder decimal
ushortint, uint, long, ulong, float, double oder decimal
intlong, float, double oder decimal.
uintlong, ulong, float, double oder decimal
longfloat, double oder decimal
ulongfloat, double oder decimal
charushort, int, uint, long, ulong, float, double oder decimal
floatDouble

Von int, uint, long oder ulong in float und von long oder ulong in double kann eine Genauigkeitsverlust auftreten. Es gibt keine implizite Konvertierung in den Datentyp char.

Nicht alle Datentypen werden implizit in andere Datentypen umgewandelt. Zum Beispiel kann der Typ int nicht implizit in uint umgewandelt werden. Es muss explizit angegeben werden, wie im folgenden Beispiel gezeigt.

public static void Main()
{
    int i = 100;
    uint u = (uint) i;
    Console.Write(i);
}

Im obigen Beispiel wird die Ganzzahl i durch Angabe von uint in Klammern (uint) explizit in uint umgewandelt. Dies wandelt die Ganzzahl in uint um.