Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

156
Vistas
¿C# tiene algún equivalente a `cond` de Elixir?

En Elixir, si quiero verificar varias condiciones booleanas, en lugar de un lío feo de lógica if/else, puedo hacer esto elegantemente:

 guess = 46 number_of_guesses = 3 cond do number_of_guesses > 5 -> IO.puts "Too many guesses! You lose." guess == 46 -> IO.puts "You guessed 46!" guess == 42 -> IO.puts "You guessed 42!" true -> IO.puts "I give up." end

El programa anterior genera el siguiente resultado:

¡Adivinaste 46!

(Ejemplo derivado de Tutorialspoint , pero más elaborado para demostrar que no todas las expresiones deben contener la misma variable).

¿C# tiene algo similar o necesitaría usar if/else?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si está comparando con un valor en casi todos los casos, aún puede usar una expresión de cambio , con protectores de caso:

 int guess = 46; int numberOfGuesses = 3; Console.WriteLine( guess switch { _ when numberOfGuesses > 5 => "Too many guesses! You lose.", 46 => "You guessed 46!", 42 => "You guessed 42!", _ => "I give up." } );

Tenga en cuenta que en el primer brazo, coincidí con cualquier cosa (el patrón de guión bajo _ ) pero solo "cuando el número de conjeturas> 5". O, en este caso, incluso puede hacer una combinación de patrones más elegante:

 Console.WriteLine( (guess, numberOfGuesses) switch { (_, > 5) => "Too many guesses! You lose.", (46, _) => "You guessed 46!", (42, _) => "You guessed 42!", _ => "I give up." } );

Pero, por supuesto, esto no es posible en todas las situaciones.

Si todos los brazos son condiciones no relacionadas, usar este tipo de construcción _ when ... se siente un poco abusivo, por lo que, alternativamente, puede usar una cadena de operadores ternarios :

 var x = condition1 ? someValue1 : condition2 ? someValue2 : condition3 ? someValue3 : valueWhenNoConditionsAreTrue;

Aunque siento que incluso esto puede ser un poco sorprendente a primera vista.

Si desea ejecutar declaraciones en esas ramas, en lugar de expresiones, entonces debe usar una estructura if-else-if simple y antigua, o si se puede usar la coincidencia de patrones, una declaración de cambio (pero tenga en cuenta que _ when ... no se puede usar en una declaración de cambio).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda