Diskuze: Switch a default case

C# .NET .NET (C# a Visual Basic) Switch a default case American English version English version

Avatar
BeriCud
Neregistrovaný
Avatar
BeriCud:

Ahoj mám otázku jak správně doplnit k case i default: chtěl sem si to zkusit a vymazal poslední if a else a jejich příkazy a pokoušel se doplnit do složených závorek k case ještě default ale pokaždé sem dostal výpis chyby Control cannot fall through from one case label (default:)to another.
Díky.

 
Odpovědět 8.2.2013 11:08
Avatar
Odpovídá na BeriCud
Luboš Běhounek (Satik):
switch (promenna)
{
  case 1: udelejNeco();
          break;
  case 2: udelejNecoJinyho();
          goto case 1;
  default: UdelejNecoJinyho();
           break;
}

Musíš na konci každýho case něco, co způsobí, že ti běh programu nespadne do další větve - break, return, goto, throw.

Např. u case 2 se provede nejdřív větev pro 2 a pak větev pro 1.

Nahoru Odpovědět 8.2.2013 12:04
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Fuj, to je hnus. Už se nedivím, že potřebuješ breakpointy a krokování.

Nahoru Odpovědět 8.2.2013 13:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:

Ale no tak. Osobne jsem tu od tebe jeste zadnou ukazku zajimaveho kodu v C# nevidel, jen teoreticke reci o TDD. Muzu se te zeptat, jestli uz jsi vlastne nekdy delal na nejakem komercnim projektu? A ted nemyslim e-shop pro kamarada za sud piva, ale neco, na cem spolupracuji alespon tri lidi a vyvoj trva aspon par mesicu.

Dogmata jsou super, ale jen na univerzite.

 
Nahoru Odpovědět 8.2.2013 13:41
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Jaký hnus? Je to téměř ten samý kód, co je u switche i na MSDN...

Nahoru Odpovědět 8.2.2013 13:50
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Však právě. Goto bylo už v prvním produktu od Microsoftu a v jejich aplikacích smrdí dodnes.

Nahoru Odpovědět 8.2.2013 14:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

Neprogramuji v C#, proto jsem tady žádnou ukázku neuvedl.

Nahoru Odpovědět 8.2.2013 14:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vodacek
Redaktor
Avatar
Odpovídá na Kit
vodacek:

rozhodně lepší řešení než když se v javě nedá break tak to propadává o větev níže...

 
Nahoru Odpovědět  +1 8.2.2013 14:32
Avatar
Kit
Redaktor
Avatar
Odpovídá na vodacek
Kit:

Když v Javě zapomeneš break, tak ti to vyhodí warning.

Nahoru Odpovědět 8.2.2013 14:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:

Jak Java ví, že jsi ten break zapomněl? Nebo je to tak, že frajeři, co jsou příliš sexy na IDE, po kompilaci pročtou output a u každého warningu se mrknou, jestli zapomněli break, nebo to tak chtějí? Nojono.

Dobře, v C# neděláš (tím spíš mě zaráží, jak pěkně ho umíš kritizovat), tak teda v jiném jazyce jsi nějaký takový projekt, jak se ptám výše, dělal?

Na goto není vůbec nic špatného, špatné je, když ho někdo blbě používá. Nebo chceš říct, že assembler je špatný jazyk, protože se tam pořád jenom skáče?

 
Nahoru Odpovědět  +1 8.2.2013 14:43
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Co ti tak vadí na goto?

Nadužívání sice znepřehledňuje kód (ale to když se použije prasácky dokáže jakákoliv konstrukce, třeba i spousty podmínek) a je to konstrukce, bez které se vždy obejdeš - cokoliv s goto se dá přepsat jinak, ale jsou situace, kdy goto dokáže kód urychlit/zpřeh­lednit.

Tento názor má třeba i pratvůrce tvého oblíbeného OS - Linus Torvalds.

Nahoru Odpovědět  +1 8.2.2013 14:50
:)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Čápka:

Goto je velmi nebezpečné, může nastat např. tato situace: http://xkcd.com/292/

Nahoru Odpovědět  +5 8.2.2013 14:57
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

Normálně se warningy přece neobjevují, takže i ten jeden je při kompilaci velmi dobře vidět.

Goto jsem nikdy nepoužil. Stačí při programování přemýšlet trochu jinak a také ho nebudeš nikdy potřebovat.

V assembleru jiná možnost není, ale přesto se tam dají při skocích dodržovat určitá pravidla a udržet tak program na uzdě.

Nahoru Odpovědět 8.2.2013 15:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

Chceš mi snad sdělit, že po kompilaci programu nepročítáš warningy a errory od kompilátoru? No nazdar.

Nahoru Odpovědět 8.2.2013 15:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

Java pozná zapomenutý break ve switch podle toho, že za návěštím jsou příkazy, za kterými je místo break hned další návěští. Tento warning se dá selektivně vypnout, tedy pro konkrétní switch.

C# to AFAIK umí také.

Nahoru Odpovědět 8.2.2013 15:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:

Chceš mi snad sdělit, že po kompilaci programu nepročítáš warningy a errory od kompilátoru?
To jsem nějak nikde nepsal - nebo jo?

Ale abychom to nezamluvili - můžeš mi prosím odpovědět na tu původní otázku, ohledně tvých dosavadních zkušeností?

 
Nahoru Odpovědět 8.2.2013 16:19
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

... frajeři, co jsou příliš sexy na IDE, po kompilaci pročtou output a u každého warningu se mrknou, jestli zapomněli break, nebo to tak chtějí?

Nahoru Odpovědět 8.2.2013 16:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:

Z toho ti plyne, že já nečtu warningy? Přišlo mi jen zvláštní, že chceš mít v kódu něco, co vyhazuje warning, ale přitom to může být zamýšlená věc. Dál jsi napsal, že se ten warning dá vypnout, což mou zvědavost v tomto ohledu ukojilo.

Ještě tu ale máme jednu nezodpovězenou otázku, že...

 
Nahoru Odpovědět 8.2.2013 16:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

Hmm. Jak jsi přišel na to, že chci v kódu něco, co vyhazuje warning? Ve větvích switche mám obvykle jen returny, takže zpravidla ani ten break nepotřebuji.

Nahoru Odpovědět 8.2.2013 16:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:

Dobře, máš pravdu, nech to plavat.

A teda ohledně těch zkušeností?

 
Nahoru Odpovědět 8.2.2013 16:32
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

Dobře. Necháme to plavat.

Nahoru Odpovědět 8.2.2013 16:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:

:) Ty jseš komik, viď? Nejseš nějak příbuznej s Matesaxem?

 
Nahoru Odpovědět  +2 8.2.2013 16:34
Avatar
Kit
Redaktor
Avatar
Odpovídá na lcet.m
Kit:

Často si jako komik připadám. S Matesaxem příbuzný nejsem a ani bych být nechtěl. Přesto jsem si na něj tady zvykl.

Nahoru Odpovědět 8.2.2013 16:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 24 zpráv z 24.