[問題] 關於這個switch迴圈

看板C_Sharp作者 (lineage90160)時間16年前 (2008/05/14 16:08), 編輯推噓1(1011)
留言12則, 6人參與, 最新討論串1/1
private void timer1_Tick(object sender, EventArgs e) { switch (counter) { case 1: pictureBox2.Visible = false; pictureBox1.Visible = pictureBox3.Visible = true; pictureBox5.Visible = false; pictureBox4.Visible = pictureBox6.Visible = true; break; case 2: pictureBox2.Visible = false; pictureBox3.Visible = pictureBox3.Visible = true; pictureBox6.Visible = false; pictureBox4.Visible = pictureBox1.Visible = true; break; default: counter = (counter + 1) % 3; } 出現以下錯誤 -----> 程式執行無法從 case 標籤 ('default:')繼續到下一個 在default敘述式後加入break; 就可以跑了,但是執行一次case1就不繼續跑了 問題出在哪? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.192.154.49

05/14 16:50, , 1F
case 1 跑完 整個 switch 就結束了 不是很正常嗎??
05/14 16:50, 1F

05/14 16:53, , 2F
因為counter一直是1 default是沒有符合的case才會run的
05/14 16:53, 2F

05/14 17:26, , 3F
switch 又不是迴圈 @@
05/14 17:26, 3F

05/14 17:36, , 4F
看方法名稱 我是猜這一段是用timer跑
05/14 17:36, 4F

05/14 17:37, , 5F
然後要問的是為什麼只會執行case 1裡面的部份
05/14 17:37, 5F

05/14 18:23, , 6F
如果要所有的 case 包括 default 都要跑, 那就是不寫break
05/14 18:23, 6F

05/14 18:24, , 7F
那他用 switch 就很奇怪了... 囧
05/14 18:24, 7F

05/14 21:33, , 8F
不寫break會出現錯誤程式執行無法從 case 標籤....
05/14 21:33, 8F

05/14 23:09, , 9F
是想要每次都執行 default: 嗎?
05/14 23:09, 9F

05/14 23:10, , 10F
是的話就把 default 要做的事搬到 switch 區塊後面就好了
05/14 23:10, 10F

05/14 23:12, , 11F
不然就把 case: 裡的 break; 改成 goto default;
05/14 23:12, 11F

05/21 01:14, , 12F
強烈建議別用GOTO,書上好像寫違反物件導向什麼的
05/21 01:14, 12F
文章代碼(AID): #18Aftwr8 (C_Sharp)