【发布时间】:2012-07-05 09:25:21
【问题描述】:
我一直在尝试将 If Else 语句转换为 switch,但它给出了一个需要常量的错误:
这是我一直在处理的代码:
using System;
namespace ConsoleApplication6
{
class Program
{
static void Main()
{
String me;
int ME = 0, YOU = 5, THEY = 20, THEM = 30;
Console.WriteLine("Default Values: YOU = 5, THEY = 20 and THEM = 30\nValue for \"ME\" >>");
me = Console.ReadLine();
ME = Int16.Parse(me);
switch(true) {
case (ME > 0 && ME < 12) :
YOU = ME;
Console.WriteLine("Value of YOU is {0}", YOU);
break;
case ( ME == 15):
YOU = THEY * THEM;
Console.WriteLine("Value of YOU is {0}", YOU);
break;
case (ME == 20):
YOU++;
Console.WriteLine("Value of YOU is {0}", YOU);
break;
case (ME == 17):
YOU = YOU - 4;
Console.WriteLine("Value of YOU is {0}", YOU);
break;
default:
Console.WriteLine("You've entered {0}", ME);
Console.WriteLine("Value of YOU is {0}", YOU);
break;
}
Console.WriteLine("Press Enter to EXIT");
Console.ReadLine();
}
}
}
这是我要转换的内容:
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main()
{
String me;
int ME = 0, YOU = 5, THEY = 20, THEM = 30;
Console.WriteLine("Default Values: YOU = 5, THEY = 20 and THEM = 30\nValue for \"ME\" >>");
me = Console.ReadLine();
ME = Int16.Parse(me);
if (0 < ME && ME < 12)
{
YOU = ME;
Console.WriteLine("Value of YOU is {0}", YOU);
}
else if( ME == 15)
{
YOU = THEY * THEM;
Console.WriteLine("Value of YOU is {0}", YOU);
}
else if (ME == 20)
{
YOU++;
Console.WriteLine("Value of YOU is {0}", YOU);
}
else if (ME == 17)
{
YOU = YOU - 4;
Console.WriteLine("Value of YOU is {0}", YOU);
}
else
{
Console.WriteLine("You've entered {0}", ME);
Console.WriteLine("Value of YOU is {0}", YOU);
}
Console.WriteLine("Press Enter to EXIT");
Console.ReadLine();
}
}
}
【问题讨论】:
-
请不要在您的问题中使用
(Need help ASAP!)。我们可以看到您需要帮助,这很明显,因为您发布了一个问题,而就ASAP而言,这不是我们关心的问题。根据问题的质量,您迟早会得到答案。 -
嗯,改变它根本没有多大意义,是吗?好吧,也许是出于可读性的原因,但其他一切都是一样的。正如 PoweRoy 提到的,您首先需要了解 switch 语句。如果你之后仍然认为你需要重构你的代码,你应该看看“真正的”重构模式,比如replace-conditional-with-polymorphism
-
嗯,我真的没有发现任何问题......它对我来说很好......你能解释一下你的问题吗?
标签: c# if-statement switch-statement case