Problem mit Klassenmethodenrückgabe von Array in Klasse



  • Hallo, ich habe ein Problem mit folgendem Code:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace Scheibenprogramm
    {
        public class MinMaxWerte
        {
    
            private double messtiefe;
            private int zaehnezahl;
            private double breiteAbsetzung;
            private double absetzungstiefe;
    
            // *****************************************************************************
    
            private string[] bezeichnungsName = new string[0];                      // Arrays für Speicherung aus den File-Datensätzen
            private double[] minWert = new double[0];
            private double[] maxWert = new double[0];
    
            string filename = (@"c:\ScheibenParameterMinMax.sch");                  // Hier werden die Referenznamen eingelesen, werden für abspeicern benötigt
    
            public void ReadFromFileMinMax()
            {
                List<string> ListBezeichnungsName = new List<string>();
                List<double> ListMinWert = new List<double>();
                List<double> ListMaxWert = new List<double>();
    
                using (StreamReader reader = File.OpenText(filename))
                {
                    string line = null;
                    while ((line = reader.ReadLine()) != null)
                    {
                        if (line != "")
                        {
                            string[] strArr = Rückgabe(line, ";", 4);
                            ListBezeichnungsName.Add(strArr[0]);
                            ListMinWert.Add(Convert.ToDouble(strArr[1]));
                            ListMaxWert.Add(Convert.ToDouble(strArr[2]));
                        }
                    }
                }
                bezeichnungsName = ListBezeichnungsName.ToArray();
                minWert = ListMinWert.ToArray();
                maxWert = ListMaxWert.ToArray();
            }
    
            public string[] BezeichnungsName                        // Zugriff über Indexer
            {
                get { return bezeichnungsName; }
    
            }
    
            public double[] MinWert
            {
                get { return minWert; }
    
            }
    
            public double[] MaxWert
            {
                get { return maxWert; }
    
            }
    
            public string[] Rückgabe(string TextZeile, string Zeichen, int AnzahlZeichenVorkommen)           // zugewiesene Zahl aus Textzeile filtern
            {
                string[] test;
                string strAusschnitt, strRestTextZeile;
                strRestTextZeile = TextZeile;                                                   // Übergabe des Textzeilenstrings zur späteren Zerlegung
                int ZeichenPos1, ZeichenPos2;                                      // Positionen der Tennzeichen suchen
                int ZählerForSchleife = (AnzahlZeichenVorkommen - 1);
    
                if (TextZeile != "")
                {
                    if (TextZeile.Contains(Zeichen))
                    {
                        int iForZähler;
                        for (iForZähler  = 0; iForZähler <= ZählerForSchleife; iForZähler++)
                        {
                            ZeichenPos1 = strRestTextZeile.IndexOf(Zeichen);                                                        // 1. Position von Zeichen suchen
                            ZeichenPos2 = strRestTextZeile.IndexOf(Zeichen, (ZeichenPos1 + 1));             // 2. Position von Zeichen suchen 
                            strAusschnitt = strRestTextZeile.Substring((ZeichenPos1+1), (ZeichenPos2-1));   // Teilstring ausschneiden zur Abspeicherung
                            test[iForZähler] = strAusschnitt;
    
                            // evtl. noch if-Bedingung für letzten DUrchgang sperren
                            strRestTextZeile = strRestTextZeile.Substring(ZeichenPos2);                     // Stringabschnitt vor ZeichenPos2 abschneiden für nächsten Schleifendurchlauf
                        }
                    }
                }
                return Rückgabe;                //  Problem in dieser Zeile
            }
    
        }
    }
    

    Fehlermeldung die ich erhalte:
    Fehler 9 Die Methodengruppe "Rückgabe" kann nicht in den Nichtdelegattyp "string[]" konvertiert werden. Wollten Sie die Methode aufrufen? C:\Documents and Settings\jn3985\My Documents\Visual Studio 2008\Projects\C-Sharp-Ordner\Scheibenprogramm\Scheibenprogramm\MinMaxWerte.cs 115 20 Scheibenprogramm

    Die Methode string[]Rückgabe(....) macht Probleme. Wieso kann ich das Array nicht so zurückgeben?
    Hat jemand einen Schimmer?



  • Mach doch mal die Augen auf. Guck dir doch nochmal genau den Return-Value und den Namen deiner Funktion an...



  • Fehler, man kann nicht die Funktion selber zurückgeben, ich Bachel.
    Habe in der Funktion ein Array definiert, und gebe das mit der return-Anweisung zurück, und schon funzts.

    Tja ...



  • Ein Funktion kann sich schon selber zurückgeben dann braucht sie aber einen anderen Rückgabetyp
    und Fälle wo man sowas braucht dürften ziemlich selten sein.

    delegate delFunk delFunk();
    
            delFunk Funk()
            {
                return Funk;
            }
    


  • Andorxor schrieb:

    Ein Funktion kann sich schon selber zurückgeben dann braucht sie aber einen anderen Rückgabetyp
    und Fälle wo man sowas braucht dürften ziemlich selten sein.

    delegate delFunk delFunk();
    
            delFunk Funk()
            {
                return Funk;
            }
    

    Nicht unbedingt. Bei herkömmlicher Rekursion, kann er den abgegebenen Wert auch zurückgeben.



  • Bei Rekursion gib sich die Funktion nicht selbst sondern ihr Ergebnis zurück.


Anmelden zum Antworten