Impliziten Typkonvertierung in C#:
Sie funktioniert nicht, wenn der Wertebereich des Anfangsdatentyps größer ist als der des Zieldatentyps:
static void Main(string[] args)
{
//Deklarierung einer Int Variablen
int myInt;
//Initialisierung der Variablen myInt
myInt = 3.0; //FEHLER
}
Wenn der Wertebereich des Zieldatentyps größer ist als der des Anfangsdatentyps, so findet die Konvertierung statt:
static void Main(string[] args)
{
//Deklarierung einer Int Variablen
double myDouble;
//Initialisierung der Variablen myInt
myDouble = 599; //RICHTIG
}
Es kann keine implizite Datentypkonvertierung stattfinden, wenn String-Werte in numerische Werte umgewandelt werden sollen:
static void Main(string[] args)
{
//Deklarierung einer Int Variable
int myInt;
// Initialisierung der Variable
myInt = "399";//FEHLER
// "399" ist vom Datentyp String
}
Umgekehrt kann keine implizite Datentypkonvertierung stattfinden, wenn numerische Werte in Strings umgewandelt werden:
static void Main(string[] args)
{
//Deklarierung einer String Variable
string myString;
// Initialisierung der Variable
myString = 399; //FEHLER
// 399 ist vom Datentyp Int
}
Der Compiler konvertiert numerische Ausdrücke in double um, sobald nur einer der Operanden von diesem Datentyp ist:
9(int)+12(int)+4.0(double)+6(int)
static void Main(string[] args)
{
// Die numerischen Ausdrücke werden alle in Double umgewandelt
Console.WriteLine((9 + 12 + 4.0 + 6).GetType());
//Ausgabe: System.double
}
Bei einer impliziten Typumwandlung vom Datentyp char nach int wird der char-Wert mit Hilfe des Unicodes zu einem int-Wert konvertiert. Dem char-Wert ’A’ ist im Unicode-Zeichensatz die Ordnungsnummer 65 zugeordnet:
static void Main(string[] args)
{
// Deklarierung und Initialisierung einer Int Variable
int myInt = 'A';
// Ausgabe der Variable myInt
Console.WriteLine(myInt); // Ausgabe: 65
}
Diese Typumwandlung funktioniert nur vom Datentyp char nach int und nicht umgekehrt:
static void Main(string[] args)
{
// Deklarierung und Initialisierung einer Char Variable
char myChar = 65;// FEHLER
}
|