Anfänger: Rückgabe einer Klasse



  • Hallo,

    ich habe mir eine Klasse geschrieben, die eine Datei auslesen und den Inhalt verwalten soll. Die Klasse sieht wie folgt aus:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    
    namespace Zeitmanagement
    {
        class DataFile
        {
            private string DataFilePath = "";
            private int nTasks = 0;
    
            public int TasksCount()
            {
                return this.nTasks;
            }
    
            public DataFile(string fDataPath)
            {
                if (File.Exists(fDataPath))
                {
                    DataFilePath = fDataPath;
                    StreamReader myFile = new StreamReader(DataFilePath, System.Text.Encoding.Default);
                    while (!myFile.EndOfStream)
                    {
                        this.nTasks++;
                    }
                }
            }
        }
    }
    

    Die Funktion "TasksCount" soll also die Anzahl der Zeilen, welche die gelesen Datei beinhaltet zurückgeben.

    Nun möchte ich diesen Wert checken und schreibe folgende Funktion in meine Main Funktion:

    /*Connecting Data File*/
    if (File.Exists(DataPathPublic))
       {
            DataFile DataPublic = new DataFile(DataPathPublic);
            DataFilePublicConnected = true;
            int nTP = (int)DataPublic.TasksCount; //Fehler
            Console.WriteLine("Number of public tasks: " + nTP);
       }
    

    In der vorletzten Zeile beschwert sich mein Compiler. Folgender Fehler:
    "Die Methodengruppe 'TaskCount' kann nicht in den Nichtdelegattyp 'int' konvertiert werde."

    Kann mir jemand bitte helfen?

    Grüße,
    CJens



  • Hier ein Beispiel aus einem Lehrbuch:

    namespace KlasseObjekt
    {
       class Fahrzeug
       {
          private int geschwindigkeit;
    
          public string ausgabe()
          {
             return "Geschwindigkeit: " +
                geschwindigkeit;
          }
    
          public void beschleunigen(int wert)
          {
             this.geschwindigkeit += wert;
          }
       }
    }
    

    Hier kann man ein int direkt in einen String unwandeln.
    Ich habe meine Methode umgeschrieben:

    public string TasksCount()
            {
                return nTasks.ToString();
            }
    

    ...nichtmal das funktioniert!



  • Dir fehlen die Klammern, da du eine Methode aufrufen willst:

    int nTP = (int)DataPublic.TasksCount(); //Beachte die ()
    


  • 🙂

    Manchmal sieht man den Wald vor lauter Bäumen nicht.

    Vielen Dank.


Anmelden zum Antworten