Kursinhalt
C# Grundlagen
C# Grundlagen
Grundlegende Typumwandlung
Typumwandlung ist der Prozess der Umwandlung eines Wertes von einem Datentyp in einen anderen. Dies ist oft zwischen Typen möglich, die Zahlen darstellen. Zum Beispiel können Sie einen float
in einen int
und umgekehrt umwandeln. Allerdings macht es keinen logischen Sinn, einen string
direkt in einen int
umzuwandeln, und es ist ohne zusätzliche Schritte nicht möglich.
Es gibt zwei Arten der Typumwandlung: implizite Typumwandlung und explizite Typumwandlung.
Implizite Typumwandlung erfolgt automatisch, wenn ein Wert von einem Typ in einen anderen umgewandelt wird, normalerweise von einem kleineren zu einem größeren Datentyp.
main
int val1 = 10; long val2 = val1; // int is automatically converted to long float val3 = var1; // int is automatically converted to float double var4 = var1; // int is automatically converted to double
Implizite Typumwandlung erfolgt automatisch, wenn ein kleinerer Datentyp in einen größeren umgewandelt wird. Die Größe eines Datentyps wird durch die Menge an Daten bestimmt, die er halten kann, gemessen in Bits. Zum Beispiel kann ein int
32 Bits halten, während ein long
64 Bits halten kann, sodass die Umwandlung eines int
in einen long
automatisch erfolgt. Ebenso kann ein float
ohne Probleme in ein double
umgewandelt werden.
Hier ist eine Liste von Datentypen, geordnet von klein nach groß:
char
-> int
-> long
-> float
-> double
Explizite Typumwandlung ist, wenn Sie als Programmierer dem Computer sagen, dass er einen Wert in einen anderen Datentyp umwandeln soll. Dies ist notwendig, wenn von einem größeren Datentyp in einen kleineren umgewandelt wird, da einige Daten verloren gehen könnten. Zum Beispiel führt die Umwandlung des Floats 3.14
in einen Integer zu 3
, wobei der Dezimalteil verloren geht. Deshalb müssen Sie dem Computer explizit sagen, solche Umwandlungen vorzunehmen.
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = val1; // Error: Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?) Console.WriteLine(val1); Console.WriteLine(val2); } } }
Um den Fehler im obigen Code zu beheben, müssen wir val1
explizit in einen ganzzahligen Wert umwandeln.
Die Syntax eines Casts ist (datatype) value
, zum Beispiel (int) 3.1415
. In diesem Fall schreiben wir (int) val1
:
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = (int) val1; Console.WriteLine(val1); Console.WriteLine(val2); } } }
Danke für Ihr Feedback!