Besonderheit bei der Division
Bei einer Division („/“) von zwei ganzen Zahlen kommt es vor, dass als Ergebnis eine „Kommazahl“ herauskommt. Hierbei ist darauf zu achten, dass die Ergebnis-Variable auch als ein solcher Datentyp (beispielsweise float) deklariert ist.
Beispiel 1:
Bei diesem Beispiel erhältst Du als Ergebnis „3“ (Obwohl das korrekte Ergebnis 3,¯3 ist). Der Datentyp „int“ kann aber nur ganze Zahlen erfassen, daher fallen alle Nachkommastellen weg. Beispiel 2:
Jetzt sind die Zahlen mit dem Datentyp „float“ deklariert und es können „Kommazahlen“ dargestellt werden. Das Ergebnis ist 3,333333.
Konvertierung von Datentypen
Doch was machst Du, wenn Du den „falschen“ Datentyp hast und dennoch das richtige Ergebnis bekommen möchtest?
Cast (Typenkonvertierung)
Dann muss der Datentyp per Code umgewandelt, bzw. konvertiert werden. Dieses nennt man „casten“.
Es gibt zwei Arten, wie diese Umwandlung von Datentypen durchgeführt werden kann:
a) Die implizierte (automatische) Umwandlung
b) Die explizite (manuelle) Umwandlung
Die implizierte (automatische) Umwandlung
Bei der automatischen Umwandlung brauchst Du nichts weiter zu unternehmen, das Programm erkennt und wandelt von sich aus den Datentypen im Hintergrund um.
Beispielsweise wird ein int automatisch in ein long , aber ein int nicht automatisch in ein float umgewandelt.
Recht einfach, in dem Datentyp int kannst Du eine viel größere Zahl speichern als in einen float . Folglich kann bei einer automatischen Umrechnung ein Verlust entstehen, da eventuell nicht die ganze Zahl verarbeitet werden kann. Beispiel:„ int in float “ (funktioniert nicht):
Die explizite (manuelle) Umwandlung
Hier muss manuell mit einem sogenannten „Cast-Operator“ eingegriffen werden. Zur Konvertierung mit einem Cast-Operator wird vor die betroffene Variable, die umgewandelt werden soll, in Klammern der neue Datentyp geschrieben.
Im Beispiel soll der int von „zahl1“ oder „zahl2“ in ein float umgewandelt werden. Es reicht aus, wenn nur eine von beiden Zahlen umgewandelt wird, um das richtige Ergebnis zu erhalten. In diesem Fall wird der Cast „(float)“ vor die int -Variable gesetzt. Beispiel :„ int in float “ (funktioniert):
oder
Bei beiden Varianten erhältst Du als Ergebnis wieder 3,333333.
Durch das manuelle Eingreifen und Ändern von Datentypen, wird vom Programm die Möglichkeit der Speicherung nicht mehr überprüft. Bei falscher Anwendung des Cast-Operators kann es deshalb zu unerwünschten Datenverlusten kommen.
Beispiel:Du möchtest eine int -Variable in eine short -Variable umwandeln. Automatisch erfolgt diese Umwandlung nicht, da der int -Datentyp einen wesentlich größeren Zahlenbereich fassen kann als der short -Datentyp. Wenn nun dennoch folgendes programmiert wird:
Dann erhalten wir als Ergebnis für „kleineZahl“: -15536! Wir haben einen Datenverlust, da der Zahlenbereich von dem short -Datentyp bei 32.767 aufhört! Aus diesem Grund sollte der Cast-Operator nurangewendet werden, wenn sicher ist, dass der neue Datentyp auch die vorhandenen Daten erfassen kann.
Methoden (oftmals auch Funktionen oder Unterprogramme genannt) stellen kleine Programmteile dar und können mit nur einem Befehl von überall aufgerufen werden.
Sobald Du eine neue C#-Datei in Unity 3D anlegst und diese öffnest, werden direkt zwei Methoden angelegt:
Muster einer MethodeEine Methode wird mit folgendem Musterangelegt: Rückgabewert Bezeichner (){ Inhalt }Der Bezeichner einer Methode ist wieder eine individuelle und einmaligeBenennung ohne Leerzeichen. Allgemeine Regeln in der Programmierung:a) Methoden beginnen mit einem großen Buchstabenb) Mehrere Wörter werden mit einem großen Buchstaben getrennt (Beispiel: AddiereZweiZahlen)
Es gibt unterschiedliche Arten von Methoden:
a) Methode ohne Rückgabewert
b) Methode mit Rückgabewert
c) Methode mit Parametern
d) Methode mit Verweis-Parametern
Jede Methode erfüllt ihren eigenen definierten Zweck. So kann das Programm in kleine Teilprogramme aufgeteilt werden und es bleibt übersichtlich.
Schauen wir uns die unterschiedlichen Methodenarten einmal genauer an.
Methoden ohne Rückgabewert
Wie im Muster zu sehen, muss die Methode mit einem Rückgabewert angelegt werden. Doch was machst Du, wenn die Methode nichts zurückgeben soll? Dann wird einfach „nichts“ als Rückgabewert genommen und das im wörtlichen Sinne.
nichts = void
In dem oben genannten Beispiel haben wir zwei Methoden ohne einen Rückgabewert .
Dabei wir die Methode durchlaufen, der Codeinhalt ausgeführt, aber anschließend kein Wert (nichts) an eine andere Stelle im Code geliefert. Beispielim Code:
Beim Aufruf der Methode AddiereZweiZahlen() wird der Inhalt ausgeführt, es wird die Summe von a und b berechnet und in der methodeninternen Variablen ergebnis gespeichert. Allerdings wird von der Methode selbst kein Rückgabewert ( void ) geliefert. Das Ergebnis verbleibt innerhalb der Methode.
Beim Aufrufen einer Methode mit einem Rückgabewert erhältst Du hingegen einen Wert (in Form des Datentyps) direkt von der Methode zurück.
Читать дальше