Brauche mehrere Rückgabewerte in einer Methode...



  • Hi,

    Ich habe eine Methode, in der einige Aufgaben ausgerechnet werden. Nun brauche ich als Rückgabewert nicht nur das Ergebnis, sondern auch die Operanden. Ich habe schon versucht, alle Zahlen in einem Array zu speichern und dann das ganze Array als Rükgabewert zu benutzen, aber da gibt es den Fehler

    Fehler	1	Eine implizite Konvertierung vom Typ "int[]" in "int" ist nicht möglich.
    

    Welche Möglichkeit gibt es, mehrere Rückgabewerte zu bekommen?

    Danke für eure Hilfe! 😉



  • Ich habs selber rausbekommen:

    Am Methodenanfang muss public int**[]** addieren() statt public int addieren() stehen!



  • ref-Parameter
    out-Parameter

    oder den Funkionsheader richtig definieren.

    Nach dem Fehler sieht es so aus, als wenn der Rückgabetyp der Methode int ist, aber ein return -Statement hast, welches int[] zurückgibt.

    Edit: Verdammt, 42 sekunden zu langsam



  • Egal, du warst trotzdem sehr schnell und hast den Fehler richtig erkannt 👍 🙂



  • Eventuell könnte man noch erwähnen, das man sich ja eine Klasse/Struktur basteln könnte, die deine Ergebnisse und Operanten kapselt und dir dann zugriff über Properties verschaffst, zum beispiel so:

    class Results<T>
    {
      public List<T> RealResults{get;private set}
      public List<T> OperandA {get;private set;}
      public List<T> OperandB{get;private set;}
    
      public Result()
      {
        this.RealResults = new List<T>();
        this.OperandA = new List<T>();
        this.OperandB = new List<T>();
       }
    }
    

    Benutzung:

    public Results<int> Deinefunktion()
    {
       Results<int> res = new Results<int>();
       res.RealResults.Add(/*hier die Ergebnisse rein*/);
       res.OperandA.Add(/*hier operanden rein*/);
       res.OperandB.Add(/*hier operanden rein*/);
    
       return res;
    }
    

    Wäre noch ne möglichkeit. 😃



  • also ref und out ist schon nicht schlecht - ich wuerde aber die loesung von firefighter bevorzugen da dann die anzahl der operanden dynamisch bleibt


Anmelden zum Antworten