Mar*_*tow 10 .net c# case-sensitive switch-statement
我正在使用一些switch语句,并想知道在输入值时如何忽略区分大小写.
这是我的代码:
using System;
namespace SwitchStatements
{
class MainClass
{
public static void Main(string[] args)
{
Start:
Console.WriteLine("Please Input the Grade");
char grade = Convert.ToChar(Console.ReadLine());
switch (grade)
{
case 'A':
Console.WriteLine("Excellent Work!");
break;
case 'B':
Console.WriteLine("Very Good Effort! Just a couple of Errors =)");
break;
case 'C':
Console.WriteLine("You Passed. Push Yourself Next Time");
break;
case 'D':
Console.WriteLine("Better put in more effort next time. I know you can do better");
break;
default:
Console.WriteLine("Invalid Grade.");
break;
}
Console.ReadKey();
goto Start;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将"a"代替"A"而返回默认响应.
我可以使用某种类型的比较吗?如果是这样我会把它放在哪里?
您可以使用ConsoleKey条件switch,代码将如下所示.
var grade =Console.ReadKey().Key;
switch (grade)
{
case ConsoleKey.A:
Console.WriteLine("Excellent Work!");
break;
case ConsoleKey.B:
// Something here
break;
case ConsoleKey.C:
// Something here
break;
case ConsoleKey.D:
// Something here
break;
case ConsoleKey.E:
// Something here
break;
default:
// Something here
break;
}
Run Code Online (Sandbox Code Playgroud)
这样你就可以避免将输入转换为大写/小写,然后再转换为Char.只需ConsoleKey在开关内使用Enumeration即可.
你可以使用ToUpper();Like
Convert.ToChar(Console.ReadLine().ToUpper());
Run Code Online (Sandbox Code Playgroud)
并且Console.ReadLine()可以使用获得更多字符的错误保存
char grd = Convert.ToChar(Console.ReadKey().KeyChar.ToString().ToUpper());
Run Code Online (Sandbox Code Playgroud)