Compartir a través de


if-else (Referencia de C#)

Una instrucción de if identifica que la instrucción se ejecute en función del valor de una expresión de Boolean. En el ejemplo siguiente, la variable Boolean result se establece en true y, a continuación, se comprueba en la instrucción if. La salida es The condition is true.

bool condition = true;

if (condition)
{
    Console.WriteLine("The variable is set to true.");
}
else
{
    Console.WriteLine("The variable is set to false.");
}

Puede ejecutar los ejemplos de este tema colocándolos en el método de Main de una aplicación de consola.

Una instrucción de if en C# puede tomar dos formularios, como se muestra en el ejemplo siguiente.

// if-else statement
if (condition)
{
    then-statement;
}
else
{
    else-statement;
}
// Next statement in the program.


// if statement without an else
if (condition)
{
    then-statement;
}
// Next statement in the program.

En una instrucción de if-else, si condition se evalúa como true, then-statement ejecuta. Si condition es false, else-statement ejecuta. Dado que condition no puede ser simultáneamente true y false, then-statement y else-statement de una instrucción de if-else nunca pueden ambos ejecución. Después de then-statement o de las ejecuciones de else-statement, el control se transfiere a la instrucción siguiente después de la instrucción de if.

En una instrucción de if que no incluya una instrucción de else, si condition es true, then-statement ejecuta. Si condition es false, el control se transfiere a la instrucción siguiente después de la instrucción de if.

then-statement y else-statement pueden constar de una sola instrucción o varias instrucciones que se agrega entre llaves ({}). Para una sola instrucción, las llaves son opcionales pero recomendados.

La instrucción o instrucciones en then-statement y else-statement puede ser de clase, incluso otra instrucción de if anidada dentro de la instrucción original de if. En instrucciones anidadas de if, cada cláusula de else pertenece a if último que no tiene else correspondiente. En el ejemplo siguiente, Result1 aparece si m > 10 y n > 20 se evalúan como true. Si m > 10 es true pero n > 20 es false, Result2 aparece.

// Try with m = 12 and then with m = 8. 
int m = 12;
int n = 18;

if (m > 10)
    if (n > 20)
    {
        Console.WriteLine("Result1");
    }
    else
    {
        Console.WriteLine("Result2");
    }

Si, en su lugar, se desea que Result2 aparezca cuando (m > 10) es false, puede especificar que la asociación mediante las llaves para establecer el inicio y el final de la instrucción anidada de if, como se muestra en el ejemplo siguiente.

// Try with m = 12 and then with m = 8. 
if (m > 10)
{
    if (n > 20)
        Console.WriteLine("Result1");
}
else
{
    Console.WriteLine("Result2");
}

Result2 aparece si la condición (m > 10) evalúa en false.

Ejemplo

En el ejemplo siguiente, se escribe un carácter de teclado, y el programa utiliza una instrucción anidada de if para determinar si el carácter de entrada es un carácter alfabético. Si el carácter de entrada es un carácter alfabético, programa comprueba si el carácter de entrada se escribe en minúsculas o una mayúscula. Aparecerá un mensaje para cada caso.

Console.Write("Enter a character: ");
char c = (char)Console.Read();
if (Char.IsLetter(c))
{
    if (Char.IsLower(c))
    {
        Console.WriteLine("The character is lowercase.");
    }
    else
    {
        Console.WriteLine("The character is uppercase.");
    }
}
else
{
    Console.WriteLine("The character isn't an alphabetic character.");
}

//Sample Output: 

//Enter a character: 2 
//The character isn't an alphabetic character. 

//Enter a character: A 
//The character is uppercase. 

//Enter a character: h 
//The character is lowercase.

También puede anidar una instrucción de if dentro de un bloque else, como el código parcial siguiente. Las instrucciones de if de los nidos de ejemplo desde dos bloques otros y una continuación bloqueada. Los comentarios especifican qué condiciones son true o false en cada bloque.

// Change the values of these variables to test the results. 
bool Condition1 = true;
bool Condition2 = true;
bool Condition3 = true;
bool Condition4 = true;

if (Condition1)
{
    // Condition1 is true.
}
else if (Condition2)
{
    // Condition1 is false and Condition2 is true.
}
else if (Condition3)
{
    if (Condition4)
    {
        // Condition1 and Condition2 are false. Condition3 and Condition4 are true.
    }
    else
    {
        // Condition1, Condition2, and Condition4 are false. Condition3 is true.
    }
}
else
{
    // Condition1, Condition2, and Condition3 are false.
}

El ejemplo siguiente determina si un carácter de entrada es una minúscula, una letra mayúscula, o un número. Si las tres condiciones son false, el carácter no es un carácter alfanumérico. El ejemplo muestra un mensaje para cada caso.

Console.Write("Enter a character: ");
char ch = (char)Console.Read();

if (Char.IsUpper(ch))
{
    Console.WriteLine("The character is an uppercase letter.");
}
else if (Char.IsLower(ch))
{
    Console.WriteLine("The character is a lowercase letter.");
}
else if (Char.IsDigit(ch))
{
    Console.WriteLine("The character is a number.");
}
else
{
    Console.WriteLine("The character is not alphanumeric.");
}

//Sample Input and Output: 
//Enter a character: E 
//The character is an uppercase letter. 

//Enter a character: e 
//The character is a lowercase letter. 

//Enter a character: 4 
//The character is a number. 

//Enter a character: = 
//The character is not alphanumeric.

Igual que una instrucción del bloque else o el bloque then puede ser cualquier instrucción válida, puede utilizar cualquier expresión booleana válida para la condición. Puede usar operadores lógicos como &&, y, ||, |y ! para crear condiciones compuestas. El código siguiente muestra ejemplos.

// NOT
bool result = true;
if (!result)
{
    Console.WriteLine("The condition is true (result is false).");
}
else
{
    Console.WriteLine("The condition is false (result is true).");
}

// Short-circuit AND
int m = 9;
int n = 7;
int p = 5;
if (m >= n && m >= p)
{
    Console.WriteLine("Nothing is larger than m.");
}

// AND and NOT
if (m >= n && !(p > m))
{
    Console.WriteLine("Nothing is larger than m.");
}

// Short-circuit OR
if (m > n || m > p)
{
    Console.WriteLine("m isn't the smallest.");
}

// NOT and OR
m = 4;
if (!(m >= n || m >= p))
{
    Console.WriteLine("Now m is the smallest.");
}
// Output:
// The condition is false (result is true).
// Nothing is larger than m.
// Nothing is larger than m.
// m isn't the smallest.
// Now m is the smallest.

Especificación del lenguaje C#

Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea también

Referencia

Palabras clave de C#

Operador ?: (Referencia de C#)

if-else (Instrucción) (C++)

switch (Referencia de C#)

Conceptos

Guía de programación de C#

Otros recursos

Referencia de C#