Si voy a escribir esta pieza de código, funciona bien con la normal «if-else’ diseño.

if(isOn)
{
    i = 10;
}
else
{
    i = 20;
}

Aunque estoy seguro de cómo convertir esta usando el operador ternario

        isOn = true ? i = 1 : i = 0;

De Error: Tipo de la expresión condicional no se puede determinar debido a que
no hay implícitamente la conversión entre «vacío» y «vacío».

EDITAR:
Respuesta = i = isOn ? 10 : 20;

Es posible hacer esto con métodos?

if(isOn)
{
    foo();
}
else
{
    bar();
}
  • Editado para añadir el método de la pregunta.
  • Para su edición:, ¿por qué quieres hacer eso con los métodos ? no es su if lo suficientemente claro ? también depende de lo que estos métodos están regresando. Si no se genera nada void entonces creo que usted no puede utilizar el ternario de los operadores.
  • Si usted tiene una nueva pregunta, a continuación, pedir a una pregunta aparte, no actualización de las preguntas existentes con una nueva pregunta.
  • Gracias @Habib mi error.
InformationsquelleAutor Marc C | 2014-08-29

7 Comentarios

  1. 12

    Por favor, intente lo siguiente. Por CIERTO, esto sólo funciona para el valor de las cesiones no las llamadas de método.

    i = isOn ? 10 : 20;

    Referencia:

    • Perfecto gracias. He editado la pregunta, ¿sabes si es posible con los métodos?
    • ¿Cuáles son sus métodos de regresar? Ya que la respuesta depende de que
    • Los métodos son nulas.
    • Actualizada la respuesta. No es posible que las llamadas de método.
    • Para su edición: esto funciona para las llamadas de método, sólo si los métodos que se están volviendo algo. por ejemplo i = isOn ? GetInt10() : GetInt20(); Donde GetInt10 y GetInt20 devuelve int valor.
    • muy determinada persona puede ajustar void métodos en lambda devolver falso valor puramente teórico, la forma de utilización de ?: con nula funciones.
    • sí 🙂 pero el punto es que el true/false la expresión debe devolver algo

  2. 5

    Usted puede simplemente intente esto:

    i = isOn? 10:20

    La MSDN dice:

    La condición se debe evaluar como verdadero o falso. Si la condición es verdadera,
    first_expression se evalúa y se convierte en el resultado. Si la condición es
    falso, second_expression se evalúa y se convierte en el resultado. Sólo uno
    de las dos expresiones se evalúan.

    EDICIÓN:-

    Si quieres invocar void métodos en un operador condicional, puede utilizar los delegados de los demás no es posible utilizar operadores ternarios para los métodos.

    Y si sus métodos son de devolver algo a tratar como este:

    i = isOn ? foo() : bar();    //assuming both methods return int
    • Comprobar la actualización de la respuesta!
  3. 4

    Usted está en el camino correcto pero un poco apagado.
    i = isOn ? 10 : 20;

    Aquí 10 será asignado a i si isOn == true y 20 será asignado a i si isOn == false

  4. 2

    He aquí una explicación que podría ser de ayuda. La declaración de que usted está buscando es:

    i = isOn ? 10 : 20;

    Y esto es lo que significa:

    (result) = (test) ? (value if test is true) : (value if test is false);
  5. -3

    Usted necesita:

    i = true ? 10 : 20;

    donde true es su condición.

    • isOn es el bool (condición) especificado en el código de OP
    • El OP ya ha publicado la respuesta a esta. i = isOn ? 10 : 20;
    • true parte era sólo para el OP reemplazar con la condición.

Dejar respuesta

Please enter your comment!
Please enter your name here