切换声明是我喜爱switch与if/else if构造的个人主要原因之一.这里有一个例子:
static string NumberToWords(int number)
{
string[] numbers = new string[]
{ "", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine" };
string[] tens = new string[]
{ "", "", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety" };
string[] teens = new string[]
{ "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen" };
string ans = "";
switch (number.ToString().Length)
{
case 3:
ans += string.Format("{0} hundred and ", numbers[number / 100]); …Run Code Online (Sandbox Code Playgroud) 我正在使用gotoswitch语句的内部来模拟fall through行为.
我的switch语句使用a enum来确定要使用的是哪种情况.当包含该包含的情况goto被执行时,执行在该点挂起,并且托管进程开始使用更多的cpu.
我的代码如下所示:
switch (myEnum)
{
case HostClass.EnumType.var1: goto case HostClass.EnumType.var2;
case HostClass.EnumType.var2: myint = 3; break;
default: break;
}
Run Code Online (Sandbox Code Playgroud)
为什么我的switch语句挂在goto上?在线阅读,这似乎是一种常见的模式.
删除goto修复它,但我不明白为什么.