if-else (Referência de C#)if-else (C# Reference)

Uma instrução if identifica qual instrução executar com base no valor de uma expressão booliana.An if statement identifies which statement to run based on the value of a Boolean expression. No exemplo a seguir, a variável bool condition deve ser definida como true e, em seguida, verificada na instrução if.In the following example, the bool variable condition is set to true and then checked in the if statement. A saída é The variable is set to true..The output is The variable is set to true..

bool condition = true;

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

Você pode executar os exemplos neste tópico colocando-os no método Main de um aplicativo de console.You can run the examples in this topic by placing them in the Main method of a console app.

Uma instrução if no C# pode ocorrer de duas formas, como mostra o exemplo a seguir.An if statement in C# can take two forms, as the following example shows.

// 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.

Em uma instrução if-else, se condition for avaliada como verdadeira, a then-statement será executada.In an if-else statement, if condition evaluates to true, the then-statement runs. Se condition for falsa, a else-statement será executada.If condition is false, the else-statement runs. Como condition não pode ser verdadeira e falsa simultaneamente, a then-statement e a else-statement de uma instrução if-else nunca podem ser executadas juntas.Because condition can’t be simultaneously true and false, the then-statement and the else-statement of an if-else statement can never both run. Após then-statement ou else-statement ser executada, o controle é transferido para a próxima instrução após a instrução if.After the then-statement or the else-statement runs, control is transferred to the next statement after the if statement.

Em uma instrução if que não inclui uma instrução else, se condition for verdadeira, a then-statement será executada.In an if statement that doesn’t include an else statement, if condition is true, the then-statement runs. Se condition for falsa, o controle será transferido para a próxima instrução após a instrução if.If condition is false, control is transferred to the next statement after the if statement.

Tanto a then-statement como a else-statement podem consistir em uma única instrução ou várias instruções entre chaves ({}).Both the then-statement and the else-statement can consist of a single statement or multiple statements that are enclosed in braces ({}). Para uma única instrução, as chaves são opcionais, mas recomendadas.For a single statement, the braces are optional but recommended.

A instrução ou instruções na then-statement e na else-statement podem ser de qualquer tipo, incluindo outra instrução if aninhada na instrução if original.The statement or statements in the then-statement and the else-statement can be of any kind, including another if statement nested inside the original if statement. Em instruções if aninhadas, cada cláusula else pertence ao último if que não tem um else correspondente.In nested if statements, each else clause belongs to the last if that doesn’t have a corresponding else. No exemplo a seguir, Result1 aparecerá se m > 10 e n > 20 forem avaliadas como verdadeiras.In the following example, Result1 appears if both m > 10 and n > 20 evaluate to true. Se m > 10 for verdadeiro, mas n > 20 for falso, Result2 será exibido.If m > 10 is true but n > 20 is false, Result2 appears.

// 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");
    }

Se, em vez disso, você desejar que Result2 apareça quando (m > 10) for falso, pode especificar essa associação usando chaves para estabelecer o início e o fim da instrução if aninhada, como o exemplo a seguir mostra.If, instead, you want Result2 to appear when (m > 10) is false, you can specify that association by using braces to establish the start and end of the nested if statement, as the following example shows.

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

Result2 aparecerá se a condição (m > 10) for avaliada como falsa.Result2 appears if the condition (m > 10) evaluates to false.

ExemploExample

No exemplo a seguir, você insere um caractere do teclado e o programa usa uma instrução if aninhada para determinar se o caractere de entrada é um caractere alfabético.In the following example, you enter a character from the keyboard, and the program uses a nested if statement to determine whether the input character is an alphabetic character. Se o caractere de entrada for um caractere alfabético, o programa verificará se o caractere de entrada está em maiúscula ou minúscula.If the input character is an alphabetic character, the program checks whether the input character is lowercase or uppercase. Será exibida uma mensagem para cada caso.A message appears for each case.

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.

ExemploExample

Você também pode aninhar uma instrução if dentro de um bloco else, como mostra o código parcial a seguir.You also can nest an if statement inside an else block, as the following partial code shows. O exemplo aninha instruções if em dois blocos else e um bloco then.The example nests if statements inside two else blocks and one then block. Os comentários especificam quais condições são verdadeiras ou falsas em cada bloco.The comments specify which conditions are true or false in each block.

// 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.
}

ExemploExample

O exemplo a seguir determina se um caractere de entrada é um número, uma letra maiúscula ou uma letra minúscula.The following example determines whether an input character is a lowercase letter, an uppercase letter, or a number. Se todas as três condições forem falsas, o caractere não será um caractere alfanumérico.If all three conditions are false, the character isn’t an alphanumeric character. O exemplo exibe uma mensagem para cada caso.The example displays a message for each case.

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.

Assim como uma instrução no bloco else ou no bloco then pode ser qualquer instrução válida, você pode usar qualquer expressão booliana válida para a condição.Just as a statement in the else block or the then block can be any valid statement, you can use any valid Boolean expression for the condition. Você pode usar operadores lógicos tais como !, &&, ||, &, |, e ^ para criar condições compostas.You can use logical operators such as !, &&, ||, &, |, and ^ to make compound conditions. O código a seguir mostra exemplos.The following code shows examples.

// 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.

Especificação da linguagem C#C# language specification

Para obter mais informações, consulte a Especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Consulte tambémSee also