Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Addieren 2er Complexer Zahlen in C# » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Addieren 2er Complexer Zahlen in C#
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
wenn ich [...] c1.Add3(c2); aufrufe,
wird quasi mein c2 für die Zeit der Methodendurchführung einfach nur "ctmp" genannt? es ist also exakt das selbe... (also nicht Kopie, sondern nur "namensänderung")?????
und deswegen ändere ich auch mein c2 (was ja eigentlich nicht soll)

Genau. Es wird nicht wirklich die Variable übergeben, sondern nur die Information, wo im Arbeitsspeicher die Variable zu finden ist.
Das gilt übrigens nicht nur für Klassen, sondern auch für Arrays.
Bei einer struct wird der komplette Inhalt kopiert, wie du es von int, double, ... kennst.
Der Vorteil: bei großen Datensammlungen in einer Klasse würde das Kopieren des Speicherinhalts recht lange dauern.
Mit ref kann erzwungen werden, dass z.B. auch bei int die Adresse übergeben wird, nicht der Inhalt.

Zitat:
Wenn ich sowas habe wie:
c1=c1.Add3(c2.Add3(c3));
Dann führt der das doch von rechts nach links aus oder?
Also al erstes macht er c2.Add3(c3)????

Ja, bzw. von innen nach außen.


Edit: habe mir dein Programm mal näher angesehen, das Init() ist so nicht sauber (mal abgesehen davon, dass unnötig, wie schon erwähnt wurde):
Dein Code
code:
1:
2:
3:
4:
5:
        public void Init(float wert1, float wert2)
        {
            this.re = wert1;
            this.im = wert2;
        }

besser:
code:
1:
2:
3:
4:
5:
        public void Init(float re, float im)
        {
            this.re = re;
            this.im = im;
        }

Vorteil: wenn du die Methode aufrufen willst, zeigt dir z.B. Visual Studio als Hilfe die zu übergebenden Parameter an (siehe Bild), hier ist wert1 nicht wirklich aussagekräftig.
Außerdem ist genau das der Grund, überhaupt this zu schreiben: um das an die Funktion übergebene "re" von dem in der Klasse unterscheiden zu können.

eulerscheZahl hat dieses Bild (verkleinerte Version) angehängt:
IntelliSense.png



__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 13.04.2013 10:37.

13.04.2013 10:21 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Außerdem ist genau das der Grund, überhaupt this zu schreiben: um das an die Funktion übergebene "re" von dem in der Klasse unterscheiden zu können.


Da möchte ich nicht ganz zustimmen. Ich halte ein "this" immer für sinnvoll, auch wenn es nicht um diese Unterscheidung geht. Und zwar ganz einfach darum, dass man einer Variable sofort ansieht ob sie zur Klasse gehört oder nicht. Die einzige Ausnahme bilden Konstanten, die sich schon dadurch kennzeichnen, dass sie (jedenfalls typischerweise) versal geschrieben sind.

Einige IDEs heben Klassenvariablen natürlich farblich sowieso hervor. Aber Lesbarkeit sollte nicht von der IDE-Einstellung abhängen. Und mal ein "this" zu setzen und mal nicht finde ich auch schlicht inkosistent.

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Airblader: 13.04.2013 12:10.

13.04.2013 11:21 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Über den Stil lässt sich natürlich streiten, mein Programmierbuch rät auch dazu, this immer zu verwenden, Microsoft selbst verzichtet darauf.
Wenn ich aber so darüber nachdenke, gebe ich dir Recht mit der besseren Lesbarkeit, werde mich künftig daran halten.

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 13:46 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Addieren 2er Complexer Zahlen in C#