English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
C# enthält einige vorgegebene Werttypen und Referenztypen. Der folgende Tisch zeigt die vorgegebenen DatenTypen:
Typ | Beschreibung | Bereich | Suffix |
---|---|---|---|
byte | 8 Bitunsignierte Ganzzahlentypen | bis 255 | |
sbyte | 8 Bitzeichenbehaftete Ganzzahlentypen | -128 bis 127 | |
short | 16 Bitzeichenbehaftete Ganzzahlentypen | -32,768 bis 32,767 | |
ushort | 16 Bitunsignierte Ganzzahlentypen | bis 65,535 | |
int | 32 Bitzeichenbehaftete Ganzzahlentypen | -2,147,483,648 bis 2,147,483,647 | |
uint | 32 Bitunsignierte Ganzzahlentypen | bis 4,294,967,295 | u |
long | 64 Bitzeichenbehaftete Ganzzahlentypen | -9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807 | l |
ulong | 64 Bitunsignierte Ganzzahlentypen | bis 18,446,744,073,709,551,615 | ul |
float | 32 Bitgenaue Single-Fließkommazahlen | -3.402823e38 bis 3.402823e38 | f |
double | 64 Bitgenaue Double-Fließkommazahlen | -1.79769313486232e308 bis 1.79769313486232e308 | d |
decimal | 128 Bitgenaue Dezimalwerte,28-29 gültige Stellen | (+ oder-)1.0 x 10e-28 bis 7.9 x 10e28 | m |
char | 16 Bit Unicode Zeichen | jeder gültige Zeichen, zum Beispiel a,*, \x0058 (hex), oder\u0058 (Unicode) | |
bool | 8 Bitlogisch true/false Wert | True oder False | |
object | Basisklasse aller Typen | ||
string | Unicode-Zeichenfolge | ||
DateTime | stellt Datum und Uhrzeit dar | 0: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;
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-Typen | Typ |
---|---|---|
byte | System.Byte | struct |
sbyte | System.SByte | struct |
int | System.Int32 | struct |
uint | System.UInt32 | struct |
short | System.Int16 | struct |
ushort | System.UInt16 | struct |
long | System.Int64 | struct |
ulong | System.UInt64 | struct |
float | System.Single | struct |
double | System.Double | struct |
char | System.Char | struct |
bool | System.Boolean | struct |
object | System.Object | Class |
string | System.String | Class |
decimal | System.Decimal | struct |
DateTime | System.DateTime | struct |
Das bedeutet, dass es egal ist, ob Sie int oder Int definieren32alle Variablen sind gleich.
int i = 345; Int32 i = 345;// wie oben
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 Konvertierung | bis |
---|---|
sbyte | short, int, long, float, double decimal |
byte | short, ushort, int, uint, long, ulong, float, double, decimal |
short | int, long, float, double oder decimal |
ushort | int, uint, long, ulong, float, double oder decimal |
int | long, float, double oder decimal. |
uint | long, ulong, float, double oder decimal |
long | float, double oder decimal |
ulong | float, double oder decimal |
char | ushort, int, uint, long, ulong, float, double oder decimal |
float | Double |
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.