if-else
An if
statement identifies which statement to run based on the value of a Boolean expression. In the following example, the bool
variable result
is set to true
and then checked in the if
statement. 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.");
}
You can run the examples in this topic by placing them in the Main
method of a console app.
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.
In an if-else
statement, if condition
evaluates to true, the then-statement
runs. If condition
is false, the else-statement
runs. 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. After the then-statement
or the else-statement
runs, control is transferred to the next statement after the if
statement.
In an if
statement that doesn’t include an else
statement, if condition
is true, the then-statement
runs. If condition
is false, control is transferred to the next statement after the if
statement.
Both the then-statement
and the else-statement
can consist of a single statement or multiple statements that are enclosed in braces ({}
). For a single statement, the braces are optional but recommended.
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. In nested if
statements, each else
clause belongs to the last if
that doesn’t have a corresponding else
. In the following example, Result1
appears if both m > 10
and n > 20
evaluate to true. 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");
}
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
appears if the condition (m > 10)
evaluates to false.
Example
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. If the input character is an alphabetic character, the program checks whether the input character is lowercase or uppercase. 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.
Example
You also can nest an if
statement inside an else block, as the following partial code shows. The example nests if
statements inside two else blocks and one then block. 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.
}
Example
The following example determines whether an input character is a lowercase letter, an uppercase letter, or a number. If all three conditions are false, the character isn’t an alphanumeric character. 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.
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. You can use logical operators such as &&, &, ||, | and ! to make compound conditions. 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.