gpt4 book ai didi

c# - 控制台.ReadKey();和 Switch 语句 - 使用字母

转载 作者:可可西里 更新时间:2023-11-01 08:51:10 26 4
gpt4 key购买 nike

我正在尝试用 C# 编写一个程序,该程序基本上基于用户按下的键(例如 X = Quit、D = Disconnect 等)运行,方法是使用 Console.ReadKey();在 C# 中

我遇到的问题是如何在 Switch 语句中使用 ReadKey 信息。有人可以帮忙吗?代码如下。

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

namespace Switch_Test
{
class Program
{
static void Main()
{
Console.WriteLine("Welcome. Please enter your command: ");
string chinput;
int input;
bool activated = false;
input = Console.ReadKey();
chinput = Convert.ToChar(input);
switch (chinput)
{
case 'x':
{
Console.WriteLine("You pressed x...");
break;
}
case 'y':
{
Console.WriteLine("You pressed y..");
break;
}
case 'd':
{
if (activated != true)
{
Console.WriteLine("Please activate first!");
break;
}
else
{
Console.WriteLine("Active..");
break;
}
}
case 'a':
{
if (activated != true)
{
activated = true;
Console.WriteLine("Activating..");
break;
}
else
{
activated = false;
Console.WriteLine("Deactivating.");
break;
}
}
default:
Console.WriteLine("Unknown Command.");
break;
}


}
}
}

我知道这可能真的是错误的,但我最初是从 Console.ReadLine(); 开始的,唯一的区别是我希望它在您按下一个键时激活一个功能,而不是必须按回车键或能够输入不同的键。提前致谢!

最佳答案

首先,Convert.ToChar() 不适用于ConsoleKeyInfo 结构,所以这就是您遇到问题的原因,此转换将抛出异常。

您不必将键转换为字符,相反,您可以打开 .Key 属性,这是一个包含每个键的可枚举属性:

var input = Console.ReadKey();

switch (input.Key) //Switch on Key enum
{
case ConsoleKey.X:
break;
case ConsoleKey.Y:
break;
}

编辑:

  1. 您也可以使用 input.KeyChar 来获取您首先尝试的字符,然后您可以根据需要打开它,但是很难打开箭头等不同的键。
  2. 如果您关心字母是大写还是小写,您可以使用 .KeyChar 或使用 .Key.Modifiers 来检查是否移位用户输入字母时按下了键

关于c# - 控制台.ReadKey();和 Switch 语句 - 使用字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com