Foros del Web » Programación para mayores de 30 ;) » .NET »

if en una linea

Estas en el tema de if en una linea en el foro de .NET en Foros del Web. hola amigos, alguien sabe como se hace el if en una linea quiero aprender hacer eso y econtre informacion es bastante sensillo pero solo aprendo ...
  #1 (permalink)  
Antiguo 27/09/2013, 17:12
Avatar de elhombredeblanko  
Fecha de Ingreso: junio-2011
Ubicación: México Lindo y Querido
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 2
if en una linea

hola amigos, alguien sabe como se hace el if en una linea
quiero aprender hacer eso y econtre informacion es bastante sensillo
pero solo aprendo como ejecutarlo cuando se iguala a algo el if
y quiero hacerlo de tal manera que ejecute un metodo
ejemplo de mi codigo

Código C:
Ver original
  1. int a = 9;
  2. a == 0 ? (Action)metodo1 : a > 0 ? (Action)metodo2)();

me marca error

quiero hacer que si a = 0 ejecute metodo uno sino si es mayor a cero
ejecute metodo dos si es menor a cero ejecute metodo 3

espero me ayuden
gracias, es info que quiero aprender..
__________________
si siempre hay algo nuevo que aprender
  #2 (permalink)  
Antiguo 30/09/2013, 12:21
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: if en una linea

este código es de C#
int y=0;
string s=string.Empty;
s = y > 1 ? "Si es" : "si no es";

dice lo siguiente;
s (que es mi variable) es igual al valor que resulte de la pregunta y>1
como primera instancia toma el valor que si es, los dos puntos significan no o lo contrario o que no se cumple la condición y toma otro valor.

espero te sirva saludos!!!
  #3 (permalink)  
Antiguo 30/09/2013, 15:09
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 15 años, 8 meses
Puntos: 187
Respuesta: if en una linea

Me parece que estas mezclando un par de cosas:

Primero tienes dos condicionales en una sola linea

a == 0 ? (Action)metodo1 : (codigo)

y ...

a > 0 ? (Action)metodo2)();

el segundo. Y como puedes ver al segundo le falta una parte ": (codigo)".

Minimamente deberia ser:

a == 0 ? (Action)metodo1 : a > 0 ? (Action)metodo2 : (Action)metodo3;

Asumiendo que metodo1, metodo2 y metodo3 se puede castear a Action

Otro gran problema que veo en el código es el muy mal uso de los parentesis, no entiendo como no te da error de sintaxis ese codigo.

Finalmente creo que este código funcionaria de la siguiente forma:

Código C++:
Ver original
  1. using System.IO;
  2. using System;
  3.  
  4. class Program
  5. {
  6.     static void Main()
  7.     {
  8.         int a = 9;
  9.         // Read in every line in the file.
  10.         Action example1 = () => Console.WriteLine("Example1");
  11.         Action example2 = () => Console.WriteLine("Example2");
  12.         Action example3 = () => Console.WriteLine("Example3");
  13.         // Call the anonymous methods.
  14.         (a == 0 ? (Action)example1 : a > 0 ? (Action)example2 : (Action)example3).Invoke();
  15.     }
  16. }

La salida por consola es: "Example2"

Ah otra cosa! Los cast a Action son opcionales

Última edición por ryugen; 30/09/2013 a las 15:15

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:43.