Bitte helft!!!
Erstelle gerade für die Uni ein Programm um Surfbretter zu berechnen.
In meiner Klasse Berechnung stehen viel Methoden zu Berechnung. Eine ist:
public string Anftakeoff()
{
l = Convert.ToString(0.2113gewicht+71.034);
b = Convert.ToString(0.0273gewicht+19.313+0.5);
d = Convert.ToString(0.0104*gewicht+2.0591+0.25);
name = "Minimalibu";
return(name+l+b+d);
}
wird aufgerufen mit:
Berechnung be=new Berechnung(gewicht);
be.Anftakeoff();
Problem ist jetzt wie ich die Rückgabewerte dann in die Darstellungsklasse bekomme.
Darstellung form=new Darstellung(name,l,b,d);
form.Show();
Wie es jetzt is es auf jeden fall schlecht und ich bin verzweifelt. Hab auch
Darstellung(be.Anftakeoff()); geht aber auch nicht
wie werden die werte denn zurückgegeben oder wie sollte der code dann aussehen??
Hallo Moritz072
Darstellung form=new Darstellung(name,l,b,d);
daraus schliesse ich, dass dein Konstruktor der Darstellungsklasse 4 Parameter schluckt.
eine Methode kann nur ein Wert Zurückgeben, darum kann Darstellung(be.Anftakeoff()); gar nicht funktionieren.
Zahlenwerte würde ich nicht in Strings speichern. Mach ein Struct, oder ein Objekt.
Z.B ein Objekt SurfBrettProperties mit den Attributen gewicht, länge usw.
Beim ausrechnen erstellst du eine Instanz von SurfBrettProperties und gibst diese Zurück. Dem Konstruktor übergibst du dann diese SurfBrettProperty-Instanz.
Per Klasse oder Struct, Methoden können nur einen Rückgabewert haben.
public struct DarstellungInfo {
public string Name;
public string L;
public string D;
public string B;
}
Gruss
Pulpapex
Also du könntest mit out Parametern arbeiten und so mehrere Werte zurück bekommen.
Läßt sich aber vielleicht schon schicker lösen 😉
Ja wenn die 3 Werte unmittelbar zusammenpassen (z.B.: Ein Punkt mit mehreren Kordinaten), würde ich ein Struct verwenden.
Sind es aber nur 3 Werte die bei einer Berechnung zurückgegeben werden, würde ich mit Referenzen arbeiten, wie oben erläutert
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
Original von LastGentleman
Ja wenn die 3 Werte unmittelbar zusammenpassen (z.B.: Ein Punkt mit mehreren Kordinaten)
und du die drei Werte an mehreren Stellen brauchst (also nicht nur in einer Methode),
würde ich ein Struct verwenden.
Ist zumindest meine Meinung.
A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee
Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.
public void AnfTakeoff(ref decimal l,ref decimal b,ref decimal d,ref string name)
{
l=0.2113*gewicht+71.034;
b=0.0273*gewicht+19.313+0.5;
d=0.0104*gewicht+2.0591+0.25;
name = "Minimalibu";
}
Durch das Schlüsselwort **ref **wird der Inhalt der beim Aufruf übergebenen Variablen direkt im Speicher geändert. Übergabe bei Referenz funktioniert allerdings nur innerhalb eines Prozesses. Bei Methoden, die z.B. über .NET Remoting aufgerufen werden, kann ref nicht verwendet werden.
**Auch beim Aufrufen muss ref angegeben werden. **
// Variablen für Berechnungsergebnisse
decimal l,b,d;
string name;
// Berechnung ausführen
Berechnung be=new Berechnung(gewicht);
be.Anftakeoff(ref l,ref b,ref d,ref name);
Manche Leute mögen Parameterübergabe per Referenz nicht. Aber die Tatsache, dass es viel schneller ist als andere Konstruktionen, genügt aus meiner Sicht als Daseinsberechtigung. In Java z.B. gibt es nichts vergleichbares. Parameter werden bei Java immer als Wert und nicht als Referenz übergeben.