porque online mejor futuro convertir aprender c# java

online - java vs c# 2018



C#equivalente a Java''s continuar<etiqueta>? (5)

Creo que estás buscando la palabra clave simple "continuar" ... Sin embargo, al no ser un tipo Java, realmente no entiendo qué es lo que el fragmento de código está tratando de lograr.

Considere lo siguiente, sin embargo.

foreach(int i in new int[] {1,2,3,5,6,7}) { if(i % 2 == 0) continue; else Console.WriteLine(i.ToString()); }

La instrucción continue en la línea 4 es una instrucción para continuar con el ciclo en el siguiente valor. La salida aquí sería 1,3,5 y 7.

Sustituir "continuar" por "romper", de la siguiente manera,

foreach(int i in new int[] {1,2,3,5,6,7}) { if(i % 2 == 0) break; else Console.WriteLine(i.ToString()); }

dará el resultado 1. El corte ordena al bucle que finalice, más comúnmente usado cuando desea detener el procesamiento cuando se cumple una condición.

Espero que esto te brinde algo de lo que estabas buscando, pero si no, no dudes en preguntar de nuevo.

Debería ser simple y rápido: quiero un C # equivalente al siguiente código de Java:

orig: for(String a : foo) { for (String b : bar) { if (b.equals("buzz")) { continue orig; } } // other code comes here... }

Edit : OK, parece que no existe tal equivalente (hey, el mismo Jon Skeet dijo que no, que lo soluciona;)). Entonces la "solución" para mí (en su equivalente Java) es:

for(String a : foo) { bool foundBuzz = false; for (String b : bar) { if (b.equals("buzz")) { foundBuzz = true; break; } } if (foundBuzz) { continue; } // other code comes here... }


En VB.Net, puede tener un ciclo while y otro for loop y luego exit del nivel de alcance deseado.

En C #, tal vez se break; ?

Eso podría salir del bucle interno y permitir que el bucle externo continúe.


No creo que haya un equivalente, me temo. Tendrá que usar un booleano o simplemente "ir" al final del interior del bucle externo. Es incluso más complicado de lo que parece, ya que una etiqueta debe aplicarse a una declaración, pero no queremos hacer nada aquí. Sin embargo, creo que esto hace lo que quieres:

using System; public class Test { static void Main() { for (int i=0; i < 5; i++) { for (int j = 0; j < 5; j++) { Console.WriteLine("i={0} j={1}", i, j); if (j == i + 2) { goto end_of_loop; } } Console.WriteLine("After inner loop"); end_of_loop: {} } } }

Sin embargo , recomendaría encarecidamente una forma diferente de expresar esto. No puedo pensar que hay muchas veces donde no hay una forma más legible de codificarlo.


Podrías hacer algo como:

for(int i=0; i< foo.Length -1 ; i++) { for (int j=0; j< bar.Length -1; j++) { if (condition) { break; } if(j != bar.Length -1) continue; /*The rest of the code that will not run if the previous loop doesn''t go all the way*/ } }


Otra posibilidad es hacer una función con el bucle interno:

void mainFunc(string[] foo, string[] bar) { foreach (string a in foo) if (hasBuzz(bar)) continue; // other code comes here... } bool hasBuzz(string[] bar) { foreach (string b in bar) if (b.equals("buzz")) return true; return false; }