C# 将文本作为输入写入控制台输出

C# 将文本作为输入写入控制台输出,c#,.net,console-application,C#,.net,Console Application,我正在用C#编写一个控制台应用程序,程序开头有一个问题: Console.WriteLine("Would you like to create the config folder? (y/n)"); 我想在这行后面设置一个默认的“y”,这样用户只需按Enter键就足够了。 (如果他想要“n”,则用退格删除) 这可能吗?如何使用?只需使用 Console.WriteLine(""); Console.Write("y") 所以Y在下一行,他们只需按enter键。在我看来,这种行为有点奇怪。我

我正在用C#编写一个控制台应用程序,程序开头有一个问题:

Console.WriteLine("Would you like to create the config folder? (y/n)");
我想在这行后面设置一个默认的“y”,这样用户只需按Enter键就足够了。 (如果他想要“n”,则用退格删除)

这可能吗?如何使用?

只需使用

Console.WriteLine("");
Console.Write("y")

所以Y在下一行,他们只需按enter键。

在我看来,这种行为有点奇怪。我要做的是:

Console.WriteLine("Would you like to create the config folder? (Y/N) [Y]");

ConsoleKey optionKey;
do
{
    ConsoleKeyInfo key = Console.ReadKey(true);
    optionKey = key.Key == ConsoleKey.Enter ? ConsoleKey.Y : key.Key;
} while (optionKey != ConsoleKey.Y && optionKey != ConsoleKey.N);

Console.WriteLine(optionKey);

if (optionKey != ConsoleKey.N)
{
    // Do your stuff
}

这里的正确行为应该是

Console.WriteLine("Would you like to create the config folder? (y/n) [y]");
这告诉用户,
y
是默认值,只需按enter键即可自动选择。我认为如果用户想要选择
n
,这会更快,因为这样用户就不必删除
y
,然后输入他的选择

考虑用户是否必须通过多个问题,并且必须为所有问题选择
n
。这会有点烦人

编写代码的简单方法(只是一个伪代码)是:

如果仍要编写可变输出,请使用:

Console.WriteLine("Would you like to create the config folder? (y/n)");
SendKeys.SendWait("y");
Console.ReadLine();

非常感谢。但是有了这个,我不能删除y,如果不需要的话。我在回答之前尝试过,但它不允许你删除光标左侧的内容。@Pistaatortenesz如果你有
Console.ReadKey()
在我发布之后,你只会得到backspace键,将其改为
Console.ReadLine()不,没有。有一个控制台。ReadLine();您必须修复此问题:
(y/n)[y]");:)您能否在控制台应用程序中使用
SendKeys
?它位于
表单
名称空间中。这不会将输入发送到焦点吗?什么是应用程序最小化或在后台?您可以尝试以下方法:)。但您也可以尝试使用Keyboard.SendKeys功能,该功能也可以执行相同的操作。它还表示“活动窗口”。。。
Console.WriteLine("Would you like to create the config folder? (y/n)");
SendKeys.SendWait("y");
Console.ReadLine();