switch

22/04/2004 - 10:46 por Alberto | Informe spam
quiero comprobar si un valor se encuentra entre unos rangos prestablecidos
pero me encuentro que la instrucción switch no lo admite ya que después de
case tiene que ir un valor constante.

¿hay algun otro modo de hacer algo similar a esto?
switch (a)
case 50 to 60:

case 40 to 49
...

¿No os parece que C# es bastante peor en este sentido que Visual Basic? El
switch de vb era muy completo pero el de C# es limitadísimo.
Gracias.

Preguntas similare

Leer las respuestas

#6 Pablo Alvarez Doval
22/04/2004 - 19:33 | Informe spam
Hola Alberto,

¿Porqué es malo un switch?



La sentencia switch no es que sea inherentemente mala, es mas bien
que se utiliza a menudo para hacer aplicaciones muy mal diseñadas, muy
poco extensibles.. un switch casi nunca es necesario en realidad, se puede
resolver con otras aproximaciones.. por ejemplo muchos switches se
comportan 'simulando la herencia', es decir.. cada vez que aparece un
nuevo comportamiento, en lugar de heredar y crear esa clase nueva
hacemos una distincion forzada con el switch... hya mas ejemplos
pero te recomendo que mires por internet y que mires un poco los
patrones de diseño basicos del GoF..

Tampoco te traumatices de todos modos por esto, en mi facultad
dudo mucho que sepan los problemas de diseño que acarrea el switch
ni un 5-10% de la gente.. pero aun asi.. esta bien tenerlo en cuenta.

No puedo extenderme mas, tengo clase en breves, pero si te interesa
el tema dimelo por aqui o mandame un correo provado y te paso unos
enlaces.

Un saludo,
Pablo


Pablo Alvarez Doval
Estudiante de Ingenieria Informatica - Universidad de Oviedo (EUITIO)
" To Iterate is Human, to Recurse is Divine."
Respuesta Responder a este mensaje
#7 Octavio Hernandez
22/04/2004 - 22:08 | Informe spam
Alberto,

Tal vez podrías hacer una división entera por 10 y entonces por cada 10
valores (casos) originales sólo quedaría uno, con lo que el switch no
luciría mal:

int decenas = a / 10;
switch (decenas) {
case 0:
// a está entre 0 y 9
case 1:
// a está entre 10 y 19
case 2:
// a está entre 20 y 29
// etcétera
}

Slds,

Octavio


"Alberto" escribió en el mensaje
news:
quiero comprobar si un valor se encuentra entre unos rangos prestablecidos
pero me encuentro que la instrucción switch no lo admite ya que después de
case tiene que ir un valor constante.

¿hay algun otro modo de hacer algo similar a esto?
switch (a)
case 50 to 60:

case 40 to 49
...

¿No os parece que C# es bastante peor en este sentido que Visual Basic? El
switch de vb era muy completo pero el de C# es limitadísimo.
Gracias.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida