none
Wie erzeuge ich einen Delegaten für Console.Readline() RRS feed

  • Frage

  • Hallo Leute,

    um in einer Klasse das Console.Write() zu vermeiden, gehe ich wie folgt vor:

    //in der Klasse
    public OutputHandler GebeAusManager { get; set; }
    //nach jeder Objektinstanz(z.B.)
    Kunde k_example_1 = new Kunde();
    k_example_1.GebeAusManager = GebeAusManager;
    //im Hauptprogramm
    fw.GebeAusManager = Console.Write;

    Folgender Versuch,auch das Console.ReadLine() zu ersetzen schlägt jedoch fehl:

    //in der Klasse
    public OutputHandler GebeEinManager { get; set; }
    //nach jeder Objektinstanz(z.B.)
    Kunde k_example_1 = new Kunde();
    k_example_1.GebeEinManager = GebeEinManager;
    //im Hauptprogramm
    fw.GebeEinManager = Console.ReadLine;

    Hier bekomme ich den Fehler

    CS0123  C# No overload for 'ReadLine' matches delegate

    Weiß jemand,wie man den Delegaten für Console.ReadLine() richtig implementiert?


    • Bearbeitet tklustig Mittwoch, 20. Dezember 2017 17:09
    Mittwoch, 20. Dezember 2017 17:08

Antworten

  • Hi,
    bei mir funktionieren Deine Codeschnipsel es nach einigen Ergänzungen und Änderungen problemlos. Hier mal meine Demo:

    using System;
    
    namespace ConsoleApp4
    {
      delegate void OutputHandler(string s);
      delegate string InputHandler();
    
      class Program
      {
        static void Main(string[] args)
        {
          FwClass fw = new FwClass();
          //im Hauptprogramm
          fw.GebeAusManager = Console.Write;
          //im Hauptprogramm
          fw.GebeEinManager = Console.ReadLine;
          fw.Exec();
          Console.ReadKey();
        }
      }
      class FwClass
      {
        //in der Klasse 
        public OutputHandler GebeAusManager { get; set; }
        public InputHandler GebeEinManager { get; set; }
        public void Exec()
        {
          //nach jeder Objektinstanz(z.B.)
          Kunde k_example_1 = new Kunde();
          k_example_1.GebeAusManager = GebeAusManager;
          k_example_1.GebeEinManager = GebeEinManager;
    
          k_example_1.Exec();
        }
      }
      class Kunde
      {
        public OutputHandler GebeAusManager { get; set; }
        public InputHandler GebeEinManager { get; set; }
        public void Exec()
        {
          string s = GebeEinManager();
          GebeAusManager(s);
        }
      }
    }


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 20. Dezember 2017 18:13