Control de flujo (C# y Java)
Actualización: noviembre 2007
Las instrucciones de control de flujo, como if else y switch, son muy similares en Java y C#.
Instrucciones de bifurcación
Las instrucciones de bifurcación cambian el flujo de la ejecución del programa en tiempo de ejecución según ciertas condiciones.
if, else y else if
Estas instrucciones son idénticas en ambos lenguajes.
La instrucción switch
En ambos lenguajes, la instrucción switch proporciona múltiples operaciones de bifurcación condicionales. Sin embargo, existe una diferencia en cuanto a que Java permite "pasar explícitamente" un caso y ejecutar el siguiente, a menos que se utilice una instrucción break al final del caso. En cambio, C# exige el uso de una instrucción break o goto al final de cada caso y, si no hay ninguna presente, el compilador produce el siguiente error:
El control no puede pasar explícitamente de una etiqueta de caso a otra.
Se debe tener en cuenta que donde un caso no especifica un código para ejecutar cuando coincide ese caso, el control pasará al caso siguiente. Al utilizar goto en una instrucción switch, sólo se puede saltar a otro bloque de casos en el mismo modificador. Si desea saltar al caso predeterminado, debe utilizar goto default. De lo contrario, utilice goto case cond, donde cond es la condición que coincide con el caso al que desee saltar. Otra diferencia con la instrucción switch de Java es que, en Java, sólo se pueden realizar cambios en tipos enteros, mientras que C# permite realizar cambios en una variable de cadena.
Por ejemplo, lo siguiente sería válido en C#, pero no en Java:
static void Main(string[] args)
{
switch (args[0])
{
case "copy":
//...
break;
case "move":
//...
goto case "delete";
case "del":
case "remove":
case "delete":
//...
break;
default:
//...
break;
}
}
El valor que devuelve goto
En Java, goto es una palabra clave reservada que no se implementa. Sin embargo, puede utilizar instrucciones con etiquetas break o continue para lograr un propósito similar a goto.
C# permite a la instrucción goto saltar a una instrucción con etiquetas. Sin embargo, se debe considerar que para saltar a una etiqueta determinada, la instrucción goto debe estar dentro del ámbito de la etiqueta. Es decir, goto no se puede utilizar para saltar a un bloque de instrucciones, aunque se puede saltar desde uno, para saltar desde una clase o para salir del bloque finally en instrucciones try...catch. No se recomienda el uso de goto en la mayoría de los casos, ya que contradice las buenas prácticas de la programación orientada a objetos.