我一直在尝试为变量赋值,然后在这个switch/case语句之外使用相同的变量和值.
它表示switch语句之外的变量没有在本地定义,并且想知道是否有可能使这个变量成为全局变量.
到目前为止,这是我的代码:
bool play;
string choice;
string guess;
int intChoice;
int intguess;
do
{
Console.WriteLine("1: New game\n2:quit");
choice = Console.ReadLine();
intChoice = Convert.ToInt32(choice);
switch (intChoice)
{
case 1:
play = true;
break;
case 2:
play = false;
break;
}
Console.WriteLine(play);
Run Code Online (Sandbox Code Playgroud)
(请注意,我知道我可以使用if语句,但我想知道交换机和案例是如何工作的!)
问题是play如果输入不是1或者输入,则不会定义2.如果要允许,您需要确保处理所有可能的用户输入.如果用户输入4怎么办?会发生什么?怎么样Quit?
你有几个选择.您可以将您的开关/案例更改为if/else块,如果您不打算更多地扩展选项,那么这将是正常的:
if (intChoice == 1)
play = true;
else
play = false;
Run Code Online (Sandbox Code Playgroud)
您还可以default向交换机添加语句,如下所示:
switch (intChoice)
{
case 1:
play = true;
break;
case 2:
play = false;
break;
default:
//Handle invalid inputs
play = false;
break;
}
Console.WriteLine(play);
Run Code Online (Sandbox Code Playgroud)
这使您可以选择intChoice稍后添加更多s而不会使其难以扩展.在这个简单的例子中有一些重复的代码.
您也可以设置bool play = false;代码的最顶层,以便为每个案例初始化它.
问题是,如果通过 switch 语句(例如情况 3:),则可能无法分配 play。要么在开始时将变量初始化为 bool play=false .. 要么向 switch 语句添加默认情况