Autor Beitrag
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 01.09.11 21:56 
user profile iconstorestore hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Ich glaube, für Dich gilt echt die alte Informatiker-Regel: Nimm Dir mal ein Blatt Papier (keinen Editor, kein Tablet, ein wirkliches Blatt Papier!) und schreib Dir in einfachen Worten auf, was Deine Methode machen soll. Und dann (erst dann!) setzt Du es in Code um.

Ok, krass aber wieso?

Weil du dir gerade offensichtlich nicht ganz im klaren willst, wie du deinen Gedankengang umsetzen sollst. Wenn du das aufschreibst (und wirklich alles mit reinnimmst, was wichtig ist), kannst du die Idee viel leichter in Code umsetzen. So arg unterscheidet sich C# gar nicht von einer gesprochenen Sprache.

Für diesen Beitrag haben gedankt: storestore
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Do 01.09.11 22:01 
Achso, ok bin echt gerade etwas zu verwirrd mit den Gedanken. Aber das mit der Schleife, also da soll ich das mit der Methode lassen und den code einfach so einfügen, oder? Wenn es so ist habe ich das so geregelt. Aber wieso doch nicht lieber Method? Das habe ich noch nicht verstanden
ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            // Gehe zu Methode();

            Methode();
        }

        static void Methode()
        {

            // Abfrage
            Console.WriteLine("Hallo, geben sie bitte ihr aktuelles \"Vermögen\" ein!");
            // Die Variable
            double geld = Convert.ToDouble(Console.ReadLine());
            
                // Abfrage2
                Console.WriteLine("Wollen sie was drauf zahlen oder abziehen?");
                Console.WriteLine("D= draufzahlen, A=Abziehen!");
                string text = Console.ReadLine();
                if (text == "D" || text == "d")
                {   // Was soll er machen
                    Console.WriteLine("Wie viel wollen sie drauf zahlen?");
                    double draufzahlen = Convert.ToDouble(Console.ReadLine());
                    geld = geld + draufzahlen;
                    Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro");
                    Console.ReadLine();
                }
                // Was wenn es nicht stimmt
                else if (text == "A" || text == "a")
                {
                    Console.WriteLine("Wie viel wollen sie abheben?");
                    double abheben = Convert.ToDouble(Console.ReadLine());
                    geld = geld - abheben;
                    Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro");
                    Console.ReadLine();
                }
                else
                // Else again .,.
                {
                    Console.WriteLine("Bitt nur zwischen 'A'oder 'a' und 'D'oder'd' auswählen");
                    Console.ReadLine();
                }
                Console.WriteLine("Nochmal? Dan drücker 'N'  oder'n'");
                Console.WriteLine("Oder lieber raus ins Freie? ;) Dann einfach exit eingeben");
                string wiederholen = Console.ReadLine();
                do
                {
                    Console.Clear();

                    // Abfrage
                    Console.WriteLine("Hallo, geben sie bitte ihr aktuelles \"Vermögen\" ein!");
                    // Die Variable
                    double monex = Convert.ToDouble(Console.ReadLine());

                    // Abfrage2
                    Console.WriteLine("Wollen sie was drauf zahlen oder abziehen?");
                    Console.WriteLine("D= draufzahlen, A=Abziehen!");
                    string tex = Console.ReadLine();
                    if (text == "D" || text == "d")
                    {   // Was soll er machen
                        Console.WriteLine("Wie viel wollen sie drauf zahlen?");
                        double draufzahlen = Convert.ToDouble(Console.ReadLine());
                        geld = geld + draufzahlen;
                        Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro");
                        Console.ReadLine();
                    }
                    // Was wenn es nicht stimmt
                    else if (text == "A" || text == "a")
                    {
                        Console.WriteLine("Wie viel wollen sie abheben?");
                        double abheben = Convert.ToDouble(Console.ReadLine());
                        geld = geld - abheben;
                        Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro");
                        Console.ReadLine();
                    }
                    else
                    // Else again .,.
                    {
                        Console.WriteLine("Bitt nur zwischen 'A'oder 'a' und 'D'oder'd' auswählen");
                        Console.ReadLine();
                    }
                    Console.WriteLine("Nochmal? Dan drücker 'N'  oder'n'");
                    Console.WriteLine("Oder lieber raus ins Freie? ;) Dann einfach exit eingeben");
                    string wiederhole = Console.ReadLine();
                    Console.ReadLine();
                } while (wiederholen == "N" || wiederholen == "n");
            }
        }

    }

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 01.09.11 22:05 
user profile iconstorestore hat folgendes geschrieben Zum zitierten Posting springen:
Achso, ok bin echt gerade etwas zu verwirrd mit den Gedanken.

Dann hilft die Sache mit dem Blatt Papier besonders. Das ist kein Witz, es ist erstaunlich, wie gut man sich konzentrieren kann, wenn man sich mal vor ein blankes Blatt Papier setzt und die eigenen Gedanken in Worte fasst.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Do 01.09.11 22:06 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconstorestore hat folgendes geschrieben Zum zitierten Posting springen:
Achso, ok bin echt gerade etwas zu verwirrd mit den Gedanken.

Dann hilft die Sache mit dem Blatt Papier besonders. Das ist kein Witz, es ist erstaunlich, wie gut man sich konzentrieren kann, wenn man sich mal vor ein blankes Blatt Papier setzt und die eigenen Gedanken in Worte fasst.

Ok, ich werde es jetzt mal versuchen! Danke.

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Do 01.09.11 22:23 
Ok, ich habe es versucht. Alles in einer variable zu machen wäre schlauer! Wieso? Weil er es dann automatisch weiderholen muss! Aber als erstes muss er die Anweisung ohne Bedingung ausführen also eine do- while Schleife: Hier ist mal der neue code: Ich hoffe mal jetzt ist alles ok!?!
ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string wiederholen;
            do
            {




                // Abfrage
                Console.WriteLine("Hallo, geben sie bitte ihr aktuelles \"Vermögen\" ein!");
                // Die Variable
                double geld = Convert.ToDouble(Console.ReadLine());

                // Abfrage2
                Console.WriteLine("Wollen sie was drauf zahlen oder abziehen?");
                Console.WriteLine("D= draufzahlen, A=Abziehen!");
                string text = Console.ReadLine();
                if (text == "D" || text == "d")
                {   // Was soll er machen
                    Console.WriteLine("Wie viel wollen sie drauf zahlen?");
                    double draufzahlen = Convert.ToDouble(Console.ReadLine());
                    geld = geld + draufzahlen;
                    Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro");
                    Console.ReadLine();
                }
                // Was wenn es nicht stimmt
                else if (text == "A" || text == "a")
                {
                    Console.WriteLine("Wie viel wollen sie abheben?");
                    double abheben = Convert.ToDouble(Console.ReadLine());
                    geld = geld - abheben;
                    Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro");
                    Console.ReadLine();
                }
                else
                // Else again .,.
                {
                    Console.WriteLine("Bitt nur zwischen 'A'oder 'a' und 'D'oder'd' auswählen");
                    Console.ReadLine();
                }
                Console.WriteLine("Nochmal? Dan drücker 'N'  oder'n'");
                Console.WriteLine("Oder lieber raus ins Freie? ;) Dann einfach exit eingeben");
               
                wiederholen = Console.ReadLine();
                Console.Clear();
                
                
               

            } while ( wiederholen == "N" || wiederholen == "n");
        }
    }
   


}

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 01.09.11 22:46 
user profile iconstorestore hat folgendes geschrieben Zum zitierten Posting springen:
Ich hoffe mal jetzt ist alles ok!?!

Die Schleife sieht jetzt ganz gut aus.

Aber ist es beabsichtigt, dass man nach der Ausgabe des neuen Vermögens erst einmal die Eingabetaste drücken muss, bevor der weitere Text kommt? Wenn man das nicht weiß, kommt man an der Stelle vielleicht nicht weiter.
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Do 01.09.11 23:11 
Achso, ok das schreibe ich dann rein. Nur ich habe ein neues Problem aber das ist ein neues Thema das ich dann hoffentlicl bald posten werde
Danke ne ;)

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 02.09.11 10:00 
Hallo storestore,

ist es denn beabsichtigt, daß der Anwender nach jedem Schleifendurchgang immer wieder neu sein Vermögen eingeben soll?

Anstatt eine große Methode zu schreiben, solltest du versuchen, zuerst deine einzelnen Aufgaben heraus zu arbeiten (OK, das geht jetzt schon in Richtung Software Engeneering, aber früh übt sich ;-))
Ein gute Methodik ist die Top-Down Arbeitsweise.
Du definierst deine einzelnen Methoden erst einmal nur über die Namen und Parameter, ohne die Methodenrümpfe auszuprogrammieren und schreibst dann deine Hauptmethode, welche dann die anderen Methoden in gewünschter Weise aufruft.

Für diesen Beitrag haben gedankt: storestore
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Fr 02.09.11 11:04 
Hi, ja das mit dem Vermögen jedesmal eingeben kann nervig sein. Aber was wenn jemand sagt ich will mal vrsuchen was passiert wenn ich 300€ von 3000€ Abhebe. Aber man kan ja den User fragen. Wenn er will wird das vermögen eben wieder angezeigt. Jetzt mal eine Frage: Sollte man Methoden im algemeinen versuchen wegzulassen? Oder kan ich gelassen drauf los arbeiten mit Methoden?

mfg storestore

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 02.09.11 11:21 
Zitat:
Sollte man Methoden im algemeinen versuchen wegzulassen?


Nein eher im Gegenteil. Die Best Practises besagen eher das eine Methode nie länger sein soll als das was du auf dem Bildschirm mit einem Blick überschauen kannst und das eine Methode genau 1 Sache machen soll und nicht mehrere. Beides sollten man nicht völlig dogmatisch betrachten aber im Auge behalten. Eine gute Prüfregel für mich ist immer wenn ich Probleme habe der Methode einen sprechenden Namen zu geben der auch wirklich besagt was diese Methode tut. In diesem Fall macht sie wahrscheinlich zu viel und man sollte die Struktur überdenken. Wo wir übrigens wieder am Ausgangspunkt dieses Threads wären. Wenn jemand versucht seine Methode Main zu nennen ist irgendwas faul ;) Im gesagten kannst du das Wort Methode auch durch Klasse ersetzen. Gilt dort ähnlich.

Zitat:
Oder kann ich gelassen drauf los arbeiten mit Methoden?


Ist genauso schlimm. In diesem Thread wurde dir bereits empfohlen vielleicht mal erst ein Blatt zur Hand zu nehmen um deine Gedanken zu ordnen bevor du loslegst. Dem kann ich nur uneingeschränkt zustimmen und hier wiederholen.
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Sa 03.09.11 12:51 
Hi,
ok das mit dem Blatt werde ich dan in Zukunft weiter so machen (weiter so verwenden).
Naja nur das Problem mit ist das manche mir empfehlen es mit Methoden zu machen und manche meinen ich sollte es lieber ohne Methoden machen wegen der rekursierung. Abe rdie rekursierung tritt doch immer ein wenn ich eine Methode aufrufe, oder. Es gibt zwar sehr viele besipiele im "www" aber das Problem ist das ist etwas höheres Mathe. Das hatte man leider noch nicht in der 7.klasse(komm bald in dich 8. nur noch eine Woche :) ) Habe ich das so richtig verstanden

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 05.09.11 08:30 
Das siehst du falsch.
Du hast erst eine Rekursion wenn die Methode sich selbst aufruft. Im Idealfall hast du eine Methode die sich nicht selbst aufruft und die Wiederholung von außen kommt.
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Mo 05.09.11 12:59 
Achso, sprich sowas:
ausblenden C#-Quelltext
1:
2:
3:
4:
public void Methode()
{
  Methode()
}


oder mfg storestore

Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet.

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 05.09.11 13:05 
Genau das ist eine reine Rekursion.
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Mo 05.09.11 19:31 
Ahh, ok danke

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
pdelvo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55
Erhaltene Danke: 11



BeitragVerfasst: Do 08.09.11 14:36 
Rekursion als "böse" Abzustempeln ist aber auch falsch. Es gibt durchaus Einsatzgebiete in denen sie nützlich ist. Ein Beispiel wäre das rekursive durchsuchen eines Verzeichnisses. Das lässt sich zwar auch iterativ lösen(mir ist nichts bekannt was nur rekursiv funktioniert), aber das ist bei weitem aufwendiger und nicht so selbsterklärend wie die rekursive Variante. Bei Rekursion muss man aber aufpassen. Und zwar kann es dabei zu einem StackOverflow kommen. Das passiert wenn zuviiele verschachtelte Methodenaufrufe gemacht werden. Damit das Programm weiß, wo es wieder zurückspringen muss nach dem Ausführen einer Methode, wird die Rücksprungaddresse auf den Stack(Stapel9 gelegt. Dabei wird beim Aufrufen einer Methode ein Entrag hinzugefügt, und beim verlassen wird er wieder entfernt. bei der Rekursion kann es vorkommen, dass so oft wieder die Methode aufgerufen wird, dass der Stack überläuft(er ist begrenzt). Und dann fliegt einem das Programm um die Ohren (StackoverflowException). Das passiert bei der iteration nicht. Bei meinem Beispiel mit der Verzeichnissuche würde er für einen untergeordneten ordner diesen wieder rekursiv durchsuchen. Da aber die maximale Pfadlänge auf 255 zeichen begrenzt ist,und jeder Ordner mindestens einen namen von einem Zeichen haben kann kommt man auf eine maximale Ordneranzahl von 255 ineinander geschachtelten Ordnern(die Pfadseperatoren muss man da noch von abziehen). Auf jedenfall ist man mit 255 rekursionen noch lange nicht im bereich eines Stackoverflows. Daher sollte man sich immer überlegen, ob sowas überhaupt auftreten kann.

Bei deinem Programm ist die iterative version aber eindeutig die sinnvollerste. Es ist übersichtlicher. Aber auf Biegen und brechen versuchen rekursion zu vermeiden finde ich falsch. "premature optimization is the root of all evil"

Für diesen Beitrag haben gedankt: storestore
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Do 08.09.11 14:59 
Naja, aber eine Rekursion muss am Anfang noch nicht sein finde ich. Man kann auch versuchen die Probleme in mehreren Methoden und klassen und nicht nur in einer Methode, die sich selbst wieder aufruft (Rekursiert) aufzuteilen ;)
Mfg storestore

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Do 08.09.11 15:15 
user profile iconstorestore hat folgendes geschrieben Zum zitierten Posting springen:
Naja, aber eine Rekursion muss am Anfang noch nicht sein finde ich.


Am Anfang von was?
Wenn du damit den Einstieg in die Programmierung meinst, gebe ich dir teilweise recht. Bevor man das erste "Hello World" geschrieben hat muss man nicht die Tiefen der Rekursion verstanden haben.
Ich für meinen Teil bin durch meinen Informatiklehrer in der zehnten(?) Klasse auf Rekursion gestoßen worden:
"Löse dieses Problem einmal mit und einmal ohne Rekursion. Buch zum Thema steht in der Bibliothek".
So oder so ähnlich ging das damals ab.

Wenn ich so schaue, wie lange du hier schon im Forum bist, dann denke ich, kannst du dich ruhig auch mal an Rekursion trauen. Bevor du aber irgendetwas mit Rekursion programmierst, musst du erst einmal verstehen, was das ist, wie man es anwendet, welche Spielregeln gelten, etc... sprich: lernen :les:

_________________
Delphi: XE - OS: Windows 7 Professional x64
storestore Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 397
Erhaltene Danke: 7

WIN 7
C#
BeitragVerfasst: Do 08.09.11 16:58 
Hi,
ja ich meinte am anfang vom c# Lernen.
Das mit der Rekursion verstehe habe ich noch vor. Aber erstmal möchte ich gerne mein "Anfänger Buch" zu ende bringen und vlt. dann mit der Rekursion weiter arbeiten.
War das das einzige was dein Lehrer gesagt hat? War ja echt krass! Welche Schule warst du den?, gab es auf die Aufgaben Noten? und wenn ja welche hast du bekommen? *Befragung ende* ;)
mfg storestore

_________________
Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Do 08.09.11 18:30 
Hallo.

Ich habe jetzt nicht alle Beiträge gelesen, aber nur mal so neben bei: wieso schreibst du immer
ausblenden C#-Quelltext
1:
else if (text == "A" || text == "a")					

Das geht doch auch leichter z.B.
ausblenden C#-Quelltext
1:
else if (text.ToLower() == "a")					

oder du benutzt Console.ReadKey:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
ConsoleKeyInfo key = new ConsoleKeyInfo();
//Dein Code
//und jetzt machst du statt Console.ReadLine
key = Console.ReadKey();
//Und dann die Spezifische abfrage
if (key.Key == ConsoleKey.A) //...

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler