Switch语句中的C#案例敏感性

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"而返回默认响应.

我可以使用某种类型的比较吗?如果是这样我会把它放在哪里?

suj*_*lil 9

您可以使用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即可.


Moh*_*ava 6

你可以使用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)