CodeGym /Kurse /C# SELF /Konvertierung zwischen Datentypen

Konvertierung zwischen Datentypen

C# SELF
Level 2 , Lektion 3
Verfügbar

1. Warum braucht man Typkonvertierung?

C# ist eine streng typisierte Sprache. Wenn der Computer eine „Box“ für eine Zahl hat, ist der Versuch, da einen Text reinzustecken, ungefähr so, als würdest du eine Gabel in einen USB-Port stecken. Der Compiler verzeiht dir sowas nicht! 😡

Im echten Leben arbeiten wir aber oft gleichzeitig mit verschiedenen Datentypen. Zum Beispiel hast du einen String, der eine Zahl enthält. Genau hier brauchst du eine Konvertierung (oder Umwandlung) von Typen.

Schauen wir uns ein Beispiel an. Angenommen, du willst die Anzahl der Nutzer speichern:

int a = 1;
int b = "2";
int c = "drei";

Der Compiler sagt hier sofort: „Für wen hältst du mich? Ich kann nicht automatisch einen String in eine Zahl umwandeln, das musst du schon selbst machen. Du musst den String explizit in eine Zahl umwandeln.“

In C# gibt es mehrere Wege zur Konvertierung, und jeder hat seine eigenen Vor- und Nachteile und typische Stolperfallen.

2. int in string umwandeln

Im Alltag brauchen wir oft die String-Darstellung einer Zahl: zum Beispiel, um sie auf dem Bildschirm anzuzeigen, in eine Datei zu speichern, übers Netzwerk zu schicken, mit Text zu verbinden usw. In C# gibt es dafür gleich mehrere Methoden, die je nach Situation praktisch sind.

Die Methode ToString()

Das ist der Standard- und am meisten genutzte Weg:

int number = 42;
string str = number.ToString();  // str == "42"

ToString() wandelt die Zahl in einen String um, so wie es für diese Struktur üblich ist.

String-Interpolation ($"...")

Moderner Weg, super praktisch, um Strings mit Variablen zusammenzubauen:

int number = 42;
string str = $"Zahl: {number}";

String-Interpolation ruft automatisch ToString() für den eingefügten Wert auf.

Du kannst mehrere Variablen kombinieren und sogar das Format angeben:

int number = 42;
string str = $"{number:D5}"; // "00042" — fünf Ziffern mit führenden Nullen

Verkettung mit leerem String

Alt, aber funktioniert immer noch:

int number = 42;
string str = number + "";

Das geht schnell für einfache Fälle, ist aber für den lesenden Entwickler weniger offensichtlich.

3. Implizite Umwandlung in String

Wie oben schon erwähnt, haben die C#-Entwickler es so gemacht, dass wirklich jede Variable, jedes Objekt, jeder Ausdruck in C# in den Typ string umgewandelt werden kann.

Mehr noch: Das passiert automatisch, wenn wir einen string mit einem anderen Typ addieren. Beispiele:

int a = 5;
string name = "Anja" + a;            //  name enthält den String Anja5

int a = 5;
string city = a + "New York" + a;   //  city enthält den String 5New York5

int number = 10;
string code = "Yo";
string message = "Hallo! " + number + code; //  message enthält den String Hallo! 10Yo

In allen drei Beispielen haben wir Variablen vom Typ int und string einfach addiert, und das Ergebnis war immer vom Typ string.

Wichtig! Mit dem Typ string kannst du keine arithmetischen Operationen machen. Auch dann nicht, wenn der String nur aus Ziffern besteht.

Beispiele:

int a = 5;
string name = "1" + a;              //  name enthält den String 15

int a = 5;
string city = a + "9" + a;          //  city enthält den String 595

int number = 10;
string code = "10";
string message = "" + number + code; // message enthält den String 1010 

Die Addition läuft von links nach rechts ab, das Ergebnis kann also manchmal überraschend sein. Beispiel:

int a = 5;
string name = a + a + "1" + a;      // name enthält den String 1015

Ablauf der Auswertung: ((a + a) + "1") + a

4. String in Zahl umwandeln

Um eine Zahl in einen String in C# umzuwandeln, reicht es, sie mit einem leeren String zu addieren:

string str = "" + zahl;

Aber was tun, wenn du einen String in eine Zahl umwandeln willst? Nun, nicht jeder String lässt sich in eine Zahl umwandeln. Aber wenn der String nur aus Ziffern besteht, dann geht das. Dafür gibt es beim Typ int die spezielle Methode Parse().

Das sieht so aus:


int x = int.Parse("string")
String in Zahl umwandeln

Dabei ist int x die Deklaration der Ganzzahl-Variable x, und string ist die Zahl als String (also ein String, der nur aus Ziffern besteht).

Beispiele:

string str = "123";
int number1 = int.Parse(str);        //  number1 enthält die Zahl 123;

int number2 = int.Parse("321");      //  number2 enthält die Zahl 321

int number3 = int.Parse("321" + 0);  //  number3 enthält die Zahl 3210

int number4 = "321"; //  Wird nicht kompiliert: Variable vom Typ int, aber Wert vom Typ string

Für negative Werte funktioniert das übrigens auch: Die Methode int.Parse() ist ziemlich schlau.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION