List zurückübergeben



  • Ich habe folgenden Code geschrieben. Funktionieren tut er, aber ich hab den verdacht, dass da was nicht stimmt. "lTemp" so zurückzugeben ist, nehm ich mal an, falsch. Normalerweise sollte hier eine Liste als Referenz mit an die Funktion übergeben werden, oder? "return new List<Test>()" habe ich so gemacht, damit ich eine leere List zurückübergeben kann.

    Ich vermute Speichertechnisch ist das ziemlicher Unfug???

    List<Test> Werte_berechnen(int Wert)
    {
        List<Test> lTemp = new List<Test>();
    
        if(Wert <= 0)
        return new List<Test>();
    
        //Irgendwas
        //lTemp wird mit Werten gefüllt
        return lTemp;
    }
    
    public main()
    {
        int iWert;
        List<Test> lWerte= new List<Test>();
    
        lWerte = new List<Test>(Werte_berechnen(iWert));
    }
    


  • In C# ist das kein Problem, Speicher wird gemanaged + alles (ok, fast alles, bis auf value types) ist call-by-reference. Daher: im Hauptprogramm kannst du direkt den Rückgabewert von Werte_berechnen() verwenden.

    MfG SideWinder



  • Ja, ziemlicher Unfug. Wenn Du das in echten Programmen machst wirst Du unheimlich viel Müll im Speicher produzieren.

    List<Test> Werte_berechnen(int Wert) 
    { 
         List<Test> lTemp = new List<Test>(); 
    
         if(Wert <= 0) 
         return new List<Test>();  // Warum hier new List() ? Man könnte ebenso infach lTemp zurückgeben.
    
         //Irgendwas 
         //lTemp wird mit Werten gefüllt 
         return lTemp; 
    } 
    
    public main() 
    { 
         int iWert; 
         List<Test> lWerte= new List<Test>(); // Das ist Unfug. Hier wird eine unnötige neue Liste angelegt die gleich in der nächsten Zeile ersetzt wird
    
         lWerte = new List<Test>(Werte_berechnen(iWert)); // Auch das ist Unfug. Du bekommst eine Liste zurück und erzeugst eine neue Liste in die der Inhalt der alten Liste kopiert wird
    }
    

    Aufgeräumt sähe das so aus:

    List<Test> Werte_berechnen(int wert) 
    { 
         List<Test> temp = new List<Test>(); 
    
         if(wert <= 0) return temp;
    
         //Irgendwas 
         //temp wird mit Werten gefüllt 
         return temp; 
    } 
    
    public main() 
    { 
         int intWert; 
    
         List<Test> werte = Werte_berechnen(intWert); 
    }
    

    Und versuch am besten Dir diese komische Naming Konvention gar nicht erst anzugewöhnen...


Anmelden zum Antworten