1

奇妙な問題が発生しました。オブジェクトを作成します(そのオブジェクト内で 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;
        }
    }
}
4

1 に答える 1

2

MSDN からConsole.Read:

入力文字を入力している間、Re​​ad メソッドは戻りをブロックします。Enterキーを押すと終了します

したがって、たとえば、入力1しても何も実行されません-入力するまでenter. それを行うと、Console.Readが返されます1が、enterはまだバッファリングされています。を使用するConsole.ReadLineと、これをバッファリングしてフェッチするため、enterすぐに終了します。123enterこれは、Read-the fetches the 1- と入力するとReadLine、残りの fetches で確認できます23

このバッファリング動作を回避するには、Console.ReadKey代わりに試してみることをお勧めします。

于 2012-11-13T13:41:11.853 に答える