尽管ReadLine()程序关闭

时间:2012-11-13 13:32:09

标签: c# readline quit

我遇到了一个奇怪的问题。 我创建了一个对象(在该对象内部,我称之为readline ..)然后程序退出,尽管我最后调用了ReadLine()。

为什么不停止?怎么让它停下来?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Funkcjonalnosc {

    class MainClass {
        static void Main(string[] args) {
            new MainMenu();         
            Console.ReadLine();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Funkcjonalnosc {
   public class MainMenu {
        int selection;
        public MainMenu() {
            showMenu();
            selection = getSelection();
            Console.WriteLine("Wybrano "+ selection);
            switch (selection) {
                case 1: break; //strojenie
                case 2: break; //pobieranie stroju
            }
        }
        void showMenu() {
            String menu = "1. Nastrój\n2. Dodaj strój";
            Console.WriteLine(menu);
        }

        int getSelection() {//pobiera wybrana opcje z menu{
            try {
                return Console.Read();
            } catch (Exception e) { Console.WriteLine("Zly wybor"); getSelection(); }
            return -1;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

来自Console.Read上的MSDN:

  

当您键入输入字符时,Read方法会阻止其返回;按Enter键

时终止

因此,如果我输入 1 ,它就不会做任何事情 - 直到我输入输入。当我这样做时,Console.Read返回 1 ,但 enter 仍然是缓冲的。当您使用Console.ReadLine时,它会获取此缓冲的输入,因此立即退出。你可以通过输入 1 2 3 输入来看到这一点 - Read取出 1 - ReadLine取出剩余的 2 3

要避免此缓冲行为,您可能需要尝试使用Console.ReadKey