Laden...

Methode mit mehreren Rückgabewerten

Erstellt von Moritz072 vor 18 Jahren Letzter Beitrag vor 18 Jahren 8.116 Views
M
Moritz072 Themenstarter:in
17 Beiträge seit 2005
vor 18 Jahren
Methode mit mehreren Rückgabewerten

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.0273
gewicht+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??

563 Beiträge seit 2004
vor 18 Jahren

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.

P
939 Beiträge seit 2003
vor 18 Jahren

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

B
17 Beiträge seit 2004
vor 18 Jahren

Also du könntest mit out Parametern arbeiten und so mehrere Werte zurück bekommen.
Läßt sich aber vielleicht schon schicker lösen 😉

1.274 Beiträge seit 2005
vor 18 Jahren

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

1.271 Beiträge seit 2005
vor 18 Jahren

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.

3.728 Beiträge seit 2005
vor 18 Jahren
Übergabe bei Referenz

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.