錯(cuò)誤9:switch語(yǔ)句中會(huì)有些語(yǔ)句執(zhí)行不到
在C#中,如果一個(gè)switch語(yǔ)句執(zhí)行了一些操作,則程序就可能不能執(zhí)行到下一個(gè)語(yǔ)句。因此,盡管下面的代碼在C++中是合法的,但在C#中卻不合法:
switch (i)
{
case 4:
CallFuncOne();
case 5: // 錯(cuò)誤,不會(huì)執(zhí)行到這里
CallSomeFunc();
}
要實(shí)現(xiàn)上面代碼的目的,需要使用一個(gè)goto語(yǔ)句:
switch (i)
{
case 4:
CallFuncOne();
goto case 5;
case 5:
CallSomeFunc();
}
如果case語(yǔ)句不執(zhí)行任何代碼,則所有的語(yǔ)句都會(huì)被執(zhí)行。如下面的代碼:
switch (i)
{
case 4: // 能執(zhí)行到
case 5: // 能執(zhí)行到
case 6:
CallSomeFunc();
}
在C#中,如果一個(gè)switch語(yǔ)句執(zhí)行了一些操作,則程序就可能不能執(zhí)行到下一個(gè)語(yǔ)句。因此,盡管下面的代碼在C++中是合法的,但在C#中卻不合法:
switch (i)
{
case 4:
CallFuncOne();
case 5: // 錯(cuò)誤,不會(huì)執(zhí)行到這里
CallSomeFunc();
}
要實(shí)現(xiàn)上面代碼的目的,需要使用一個(gè)goto語(yǔ)句:
switch (i)
{
case 4:
CallFuncOne();
goto case 5;
case 5:
CallSomeFunc();
}
如果case語(yǔ)句不執(zhí)行任何代碼,則所有的語(yǔ)句都會(huì)被執(zhí)行。如下面的代碼:
switch (i)
{
case 4: // 能執(zhí)行到
case 5: // 能執(zhí)行到
case 6:
CallSomeFunc();
}

