01.Blogs :
AFurtado  
Engenharia de software, tendências, entrevistas e competições no mundo de TI.

Dica rápida de certificação 2: comandos switch

O comando switch possui uma série de especificidades que podem cair como armadilha em um exame de certificação .NET. Os pontos que eu ressalto são:

1) Em Java, um comando switch poderia avaliar apenas "expressões que pudessem ser convertidas implicitamente para int", como byte, short, char e o próprio int. Em C#, além disso, um bloco switch pode avaliar expressões do tipo string e enum. No caso de um string, um case do switch pode conter o valor "null".

2) Dois cases com o mesmo valor geram erro de compilação

3) Um case que contenha um comando deve ter um break explícito. Caso contrário, o seguinte erro acontecerá: Control cannot fall through from one case label to another

4) Entretanto, é possível deixar um case sem nenhum comando, como mostra o código abaixo:

switch (i) {
  case 1:
  case 2:
     Console.WriteLine("valor foi 1 ou 2");
     break;
}

5) É possível ter um goto no case de um switch, desviando o código para outro case, como exibido abaixo:

switch (i) {
      case 1: goto case 3;
      case 2:
         Console.WriteLine("valor foi 2");
         break;
      case 3:
         Console.WriteLine("valor foi 1 ou 3");
         break;
}

6) Muito estranho isso: no lugar de "case 3" acima, você poderia ter um rótulo qualquer, como "foo". Entretanto, o código determinado por esse rótulo nunca será atingido (o compilador o informa disso com um warning). Observação: esse label estranho não vai funcionar caso seja o primeiro label do switch, havendo no caso um erro de compilação.

7) O label "default" não é obrigatório e, quando existir, não precisa ser o último label do switch, embora isso seja uma boa prática de programação.

[]s
-- AFurtado

posted on Saturday, August 21, 2004 1:52 AM by AFurtado

# @ Saturday, August 21, 2004 10:32 PM

André meu véi, tá muito legal o teu blog. Só adicionando algumas coisas. Normalmente não cai na prova de certificação questões específicas sobre estruturas condicionais e tal, mas é uma boa ficar ligado nisso. A idéia de switch aceitar o uso de goto é interessante pelo fato de que em C# nós não podemos dar o Fall Through como em Java (não colocar o break ao final do case). O goto permite que façamos: switch (i) { case 1: Console.WriteLine("valor foi 1"); goto case 2; break; case 2: Console.WriteLine("valor foi 2 depois de 1"); break; } Tá muito arretado teu blog. Tua experiência em certificação Java (com aquela idéia de ter que decorar tudo e se preocupar até com ponto-e-vírgula) traz uma visão mais específica para o código em C#, e isso é bom para nós que acabamos tendo essa visão também através de você! Grande abraço! Marden Menezes

mardenmc

# @ Sunday, August 22, 2004 1:30 AM

Já ouvi opiniões diversas sobre o estilo das provas .NET... espero, realmente, que os exames do C# tenham um pouco mais de bom-senso. De toda forma, daqui a um mês saberei! :)

AFurtado


 
03.UPDATE CALENDAR :
<August 2004>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

05.MY LINKS :

07.Subscriptions :

Subscriptions


© Copyright 2005 Microsoft Corporation. All Rights Reserved.
Terms of Use | Privacy Statement | Code of Conduct | Hosted by MaximumASP for Microsoft
WHO-BAR