我遇到了一个奇怪的问题。 我创建了一个对象(在该对象内部,我称之为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;
}
}
}
答案 0 :(得分:2)
来自Console.Read
上的MSDN:
当您键入输入字符时,Read方法会阻止其返回;按Enter键
时终止
因此,如果我输入 1 ,它就不会做任何事情 - 直到我输入输入。当我这样做时,Console.Read
返回 1 ,但 enter 仍然是缓冲的。当您使用Console.ReadLine
时,它会获取此缓冲的输入,因此立即退出。你可以通过输入 1 2 3 输入来看到这一点 - Read
取出 1 - ReadLine
取出剩余的 2 3 。
要避免此缓冲行为,您可能需要尝试使用Console.ReadKey
。