C# Grund für Konvertierung

8

8800 GTX

Gast
Hallo Leute, wir haben heute in der Berufsschule an einer kleinen Konsolenanwendung in c# geübt. Wir haben unter anderem auch verschiedene Datentypen einer Variablen in eine andere konvertiert. Z. B string zu int, string zu double.

Leider verstehe ich jetzt am Anfang noch sehr wenig davon, was mir auch den Spass am programmieren raubt. Welche gründe gibt es, weshalb man Datentypen konvertieren MUSS?

Bei gelegenheit kann ich auch mal einen kleinen Quelltext aus unserem kleinen Progrämmchen posten.

Noch was: Wir in der Schule programmieren mit Visual Studio.
 
Typkonvertierung kann von Nutzen sein, wenn ein bestimmer Rückgabewert erwartet wird.

Beispielweise bei der Programmierung mit einer vorgegebenen Schnittstelle (API).

Vorhandene Funktion: calculate(int x)

Angenommen dein Programm rechnet mit Fließkommaarithmetik. Somit musst du konvertieren, um die vorgegebene Funktion nutzen zu können (falls es die Programmiersprache nicht selbst erledigt).
Im späteren Verlauf wird Typkonvertierung noch wichtiger, wenn Vererbung eine Rolle spielt. Weiteres in einschlägigen Foren, Seiten und natürlich Wikipedia.
 
8800 GTX schrieb:
Leider verstehe ich jetzt am Anfang noch sehr wenig davon, was mir auch den Spass am programmieren raubt. Welche gründe gibt es, weshalb man Datentypen konvertieren MUSS
Im übertragenden Sinne, weil der Computer zwar 240 + 800 ausrechnen kann, aber nicht was Zweihundertvierzig + Achthundert ist. Deswegen musst du vorher die Zweihundertvierzig und eine 240 umwandeln etc.
 
Da ist C# wirklich streng und das ist auch gut so. (VB sieht das lockerer)

Konvertierung (implicit(dezimal auf double -> ist ok weil das double mehr nachkommastellen, sprich es gehen keine infos verloren oder pufferuberlaufe passieren )
jedoch explicit bei der konvertierung von double -> decimal gehen informatione verloren (Daher gibt es einen Designtime error und der Programmierer muss explizit saagen
Code:
decimal val = Convert.ToDecimal(doubleVal);
) um klarzustellen "Ja, ich weis was ich tue.", da das double viel genauer ist als das dezimal. Ausserdem kann ein Bufferowerflow passieren.

Werttypen

Verweistypen

EDIT:
Qubit schrieb:
Im späteren Verlauf wird Typkonvertierung noch wichtiger, wenn Vererbung eine Rolle spielt. Weiteres in einschlägigen Foren, Seiten und natürlich Wikipedia.

Kannst mit bitte erklaeren warum Typconvertierung gerade bei Verebung so wichtig sein soll. (Oder verwechselst Du das mit casten? Das aber recht wenig mit einer Konvertierung zu tun hat)
 
Zuletzt bearbeitet:
kreadon schrieb:
Kannst mit bitte erklaeren warum Typconvertierung gerade bei Verebung so wichtig sein soll. (Oder verwechselst Du das mit casten? Das aber recht wenig mit einer Konvertierung zu tun hat)

Das Casten entspricht einer expliziten Typkonvertierung (von Objekten).
Aber Du hast recht. Ich habe mich verleiten lassen die Typkonvertierung als Beispiel der Konvertierung eines allgemeinen Typs hin zum Speziellen heranzuziehen. Zudem wollte ich nicht auf Vererbung, sondern auf Polymorphismus hinaus. Auch das ist sehr abstrahiert, als dass es als Beispiel zu betrachten wäre.
Zur Lösung dieser Verwirrung: Löst die gebildete Synapsenverknüpfung und überlest meinen letzten Absatz.
 
Stell dir vor ein Benutzer gibt in einer Eingabemaske eine Zahl ein, die irgendwie berechnet werden soll. Einegabemasken haben als Typ der Text-Eigenschaften (textBox.Text) string. Nun möchtest du damit rechnen, das geht mit strings leider nicht => Text konvertieren (mit prüfung ob es auch eine gültige zahl ist, also z.B. Int32.TryParse) und rechnen.
 
Zurück
Oben