Entwickler-Ecke

Basistechnologien - Kleines Klassenproblem


Sharpener - So 27.11.11 13:31
Titel: Kleines Klassenproblem
Hi,
ich hatte im letzten Monat ziemlich Stress und konnte nichts Programmieren. Zuletzt war ich bei Klassen und Methoden stehengeblieben.
Zurzeit programmiere ich ein kleines Betriebssystem auf C# Kernel und wollte "Entscheidungen" (die das TUI treffen muss) in eine Klasse auslagern.
Aber ich bekomme 2 Fehler.
Kurz der Code:
Kernel.cs:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;

namespace DocsLab
{
    public class Kernel : Sys.Kernel
    {
        protected override void BeforeRun()
        {
            Console.WriteLine("DocsLab booted! Currently: \nClasstest");
        }

        protected override void Run()
        {
            Console.Write("Input: ");
            string input = Console.ReadLine();
            commandline ausgabe = new commandline() { _input = input };
            string _ausgabe = ausgabe.auswertung();
            Console.WriteLine(_ausgabe);
            //Console.Write("Text typed: ");
            //Console.WriteLine(input);
        }
    }
}

und die klasse:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DocsLab
{
    class commandline
    {
        public string _input;
        public string auswertung (string _input)
        {
            switch (_input)
            {
                case "command":
                    string rueckgabe = "commandtest";
                    return rueckgabe;
                default:
                    break;
            }
        }
    }
}

Der Compiler zeigt an:

Quelltext
1:
2:
Fehler  1  Keine Überladung für die auswertung-Methode nimmt 0 Argumente an.  I:\Ultimate\DocsLab\DocsLab\Kernel.cs  20  31  DocsLab
Fehler  2  "DocsLab.commandline.auswertung(string)": Nicht alle Codepfade geben einen Wert zurück.  I:\Ultimate\DocsLab\DocsLab\commandline.cs  11  23  DocsLab


Ich verstehe das Problem der Überladung nicht. Und Fehler2 wird eleminiert durch:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            switch (_input)
            {
                case "command":
                    string rueckgabe = "commandtest";
                    return rueckgabe;
                default:
                    string _rueckgabe = "unbekannt";
                    return _rueckgabe;
            }

Dann verbleibt nurnoch Fehler 1...
Ich denke der Fehler ist recht banal und einfach aber naja ich weiss nicht


Christian S. - So 27.11.11 13:42

Hi!

Das Problem ist, dass Du zwar ein Feld _input hast, aber die Methode auch noch den Parameter _input erwartet. Beim Aufruf übergibst Du diesen Parameter nicht, damit findet er keine passende Methode.

Grüße,
Christian


Sharpener - So 27.11.11 15:31

Ah jetzt funktioniert es ...
beim Lesen im Buch ist es nach deinem Post auch aufgefallen dann müsste es ja:

C#-Quelltext
1:
string _ausgabe = ausgabe.auswertung();                    

heissen.
Ich denke damit hat sich das Problem erledigt