Addieren 2er Complexer Zahlen in C# |
|
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:
__________________ 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 |
|
|
|
Ü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 |
|
|
|