Was ist ein Implizit und ein Explizit in C# ?

2 Antworten

Also das es verschiedene Datentypen gibt das weißt du ja, in einem int kann mehr gespeichert werden als in einem short zum Beispiel.

Implizit wird konvertiert wenn zum Beispiel ein int gefordert ist aber du einen short eingibst, da der Wertebereich von einem Short kleiner ist als von einem int und somit der int auch jeden möglichen Wert vom short speichern kann, muss man nicht nochmal explizit Konvertieren.

Explizit konvertiert wird genau dann du z.B einen String wie einen Int benutzen möchtest, bzw genau dann wenn das oben genannte Szenario nicht eintritt. Wenn also der Zieldatentyp Potenziel bestimmte sachen gar nicht speichern könnte oder Der Wertebereich kleiner ist als vom Eingabe Datentyp.

Woher ich das weiß:Hobby – Ich interessiere mich für das programmieren und Informatik

Das Wort implizit deutet an, dass etwas automatisch im Hintergrund / nicht sichtbar für dich Entwickler passiert. Das sind eindeutige Operationen, die der Compiler selbst durchführen kann, ohne dass er dafür deinen Rat braucht.

Ein einfaches Beispiel:

int number = 0;
byte otherNumber = 2;
number += otherNumber;

In der dritten Zeile wird implizit ein Typecast durchgeführt. Der byte-Wert wird zum int. In Langform:

number = number + (int)otherNumber;

Da bei so einem Typecast der Wert nicht an Präzision verliert, kann er vom Compiler auch implizit durchgeführt werden.

Ein anderes Beispiel ist Typinterferenz:

var myHome = new House();

Hier ermittelt der Compiler selbstständig anhand des R-Werts, welchen Typ myHome hat. Du als Entwickler kannst es dir leicht machen und brauchst nur var schreiben.

Weitere Beispiele impliziter Operationen findest du noch in anderen Kontexten, bspw. im Zusammenhang mit Generics und Typinterferenz.

Bei expliziten Operationen hingegen gibst du sprachlich / im Code eindeutig an, was du möchtest.

Beispiel:

int number = (int)3.2f;

In der Zeile wird ein expliziter Typecast durchgeführt. Der Compiler würde diese Operation nicht implizit durchführen, denn immerhin säbelst du bei dem Cast auch die Nachkommastelle ab (veränderst den Wert also erheblich).


MysteryBow 
Beitragsersteller
 18.02.2021, 19:37

Gehört dann Convert.ToInt32 zum Beispiel zu Explizit?

0
regex9  18.02.2021, 20:08
@MysteryBow

Ja, Convert-ToInt32 wäre eine explizite Konvertierungsmethode.

1