Skip to content

Conditional statements in C# .NET 7

Conditional statements in C# .NET 7
Lost in coding? Discover our Learning Paths!
Lost in coding? Discover our Learning Paths!

Conditional statements in C# .NET 7

Conditional statements are an essential tool in any programming language, allowing the programmer to test a condition and execute a code block based on the result of the test. In C#, there are several ways to implement conditional statements, each with its own strengths and weaknesses.

In this article, we will explore the different types of conditional statements in C# and discuss their uses and best practices. We will begin with the basic if/else statement and its variants, including the else if statement, nested if statements, and ternary operators. We will discuss the advantages and disadvantages of each type of statement and provide examples of their use in C# code.

Next, we will introduce the switch statement, another way to implement conditional statements in C#. We will compare and contrast the switch statement with the if/else statement and discuss its uses and best practices. Finally, we will conclude the article with a summary of the different types of conditional statements in C# and offer guidance on choosing the right one for a particular programming task.

Whether you are a beginner or an experienced C# programmer, understanding the different types of conditional statements is essential to writing effective and efficient code. By the end of this article, you should have a thorough understanding of the different types of conditional statements in C# and how to use them effectively in your programs.

If you want to skyrocket your C# career, check out our powerful ASP.NET FULL-STACK WEB DEVELOPMENT COURSE, which also covers test-driven development and C# software architecture.

 

 

If/else Conditional statements

The if/else statement is the most basic and widely used conditional statement in C#. It is used to execute a particular block of code only if a certain condition is true. The syntax of the if/else statement is as follows:

if (condition)
{
  // code to execute if the condition is true
}
else
{
  // code to execute if the condition is false
}

 

We can visualize the general conditional statement flow with the help of the following graphic.

A visual representation of a conditional statement flow assuming the use of an if conditional statement followed by an else statement. "C#" represents code before and after the conditional statement. This can be found in chapter 3 of the Tiny C# Projects book, available now following the links in the introduction and conclusion!
A visual representation of a conditional statement flow assuming the use of an if conditional statement followed by an else statement. “C#” represents code before and after the conditional statement. This can be found in chapter 3 of the Tiny C# Projects book, available now following the links in the introduction and conclusion!

 

Here is an example that demonstrates the use of the if/else statement in C#:

int age = 20;

if (age >= 18)
{
  Console.WriteLine("You are eligible to vote.");
}
else
{
  Console.WriteLine("You are not eligible to vote.");
}

 

In the above examples, if the value of the variable ‘age’ is greater than or equal to 18, the program will output “You are eligible to vote.” Otherwise, it will output “You are not eligible to vote.”

When using the TryParse method with an if/else statement, it is often necessary to check for multiple conditions. In these cases, you can use logical operators such as && (and) and || (or) to combine multiple conditions within the same if statement.

For example, consider the following code that prompts the user to enter an integer between 1 and 10:

Console.WriteLine("Enter an integer between 1 and 10:");
string input = Console.ReadLine();

int number;
if (int.TryParse(input, out number) && number >= 1 && number <= 10)
{
    Console.WriteLine("You entered a valid number between 1 and 10.");
}
else
{
    Console.WriteLine("Invalid input. Please enter a valid integer between 1 and 10.");
}

 

In this example, the TryParse method is used to convert the user’s input to an integer. Then, the && operator is used to combine multiple conditions within the same if statement. The first condition checks whether the conversion was successful, while the second and third conditions check whether the resulting number is between 1 and 10. If all conditions are true, the code inside the if block is executed. Otherwise, the code inside the else block is executed.

Using multiple conditions within an if/else statement can help you handle more complex scenarios that require multiple checks. However, it is important to ensure that your conditions are properly combined and logically correct. Otherwise, your code may produce unexpected results or errors.

As an additional fact, if we were to attempt instead to find a number that is the same as our age variable, we might, if we knew about operators, attempt to use the “==” operator, like so.

int age = 20;

if (age == 20)
{
    Console.WriteLine("you are 20 years old!");
}

 

However, equality can be checked for in more ways then this, introducing, the Equals method. Let us go over both and see what they are useful for.

 

The “==” Operator vs the Equals method

The “==” operator is used to compare the equality of two values. It works by checking if the values of the two operands are the same. If the values are the same, the “==” operator returns true; otherwise, it returns false. Here’s an example:

int a = 10;
int b = 10;

if (a == b)
{
   Console.WriteLine("a is equal to b");
}
else
{
   Console.WriteLine("a is not equal to b");
}

 

In this example, the “==” operator is used to compare the values of ‘a’ and ‘b’. Since both variables have the same value (i.e., 10), the program will output “a is equal to b”.

On the other hand, the Equals method is a method defined on the object class in .NET, and it is used to compare the equality of two objects. By default, the Equals method checks whether two objects have the same reference. That means, two objects are equal only if they refer to the same memory location. Here’s an example:

string s1 = "hello";
string s2 = "hello";
string s3 = "world";

if (s1.Equals(s2))
{
   Console.WriteLine("s1 is equal to s2");
}
else
{
   Console.WriteLine("s1 is not equal to s2");
}

if (s1.Equals(s3))
{
   Console.WriteLine("s1 is equal to s3");
}
else
{
   Console.WriteLine("s1 is not equal to s3");
}

 

In this example, the Equals method is used to compare the values of three string objects. Since s1 and s2 have the same value, the program will output “s1 is equal to s2”. However, since s1 and s3 have different values, the program will output “s1 is not equal to s3”.

The choice between using the “==” operator and the Equals method in .NET depends on the context and the type of objects being compared.

Advantages of using the “==” operator:

  1. Simplicity: The “==” operator is a simple and intuitive way to compare the equality of value types, such as integers and doubles.
  2. Performance: The “==” operator is usually faster than the Equals method, especially when comparing value types.

Advantages of using the Equals method:

  1. Flexibility: The Equals method is more flexible than the “==” operator because it can be overridden to provide custom equality checking behavior.
  2. More robust: The Equals method is generally more robust than the “==” operator because it can handle more complex types of objects, including reference types and objects with complex internal states.

Disadvantages of using the “==” operator:

  1. Limited to value types: The “==” operator can only be used to compare value types and objects that override the “==” operator. It cannot be used to compare reference types.

Disadvantages of using the Equals method:

  1. Can be slower: The Equals method can be slower than the “==” operator, especially when comparing value types.
  2. Requires care when overriding: Overriding the Equals method can introduce bugs and unexpected behavior if not done carefully.

Both the “==” operator and the Equals method have their advantages and disadvantages, and the choice of which to use depends on the context and the types of objects being compared. The “==” operator is a simple and efficient way to compare the equality of value types, while the Equals method is more flexible and can handle more complex types of objects. If custom equality checking behavior is required, the Equals method can be overridden to provide this functionality. However, care must be taken when overriding the Equals method to avoid introducing bugs and unexpected behavior.

Alright then, back to our conditional statements, what if we wanted to test multiple conditions but not within the same statement? We could use what is known as an “else if”.

Else if  Conditional statements

Sometimes, we may want to test multiple conditions and execute different code blocks based on those conditions. In such cases, we can use the else if statement. The syntax of the else if statement is as follows:

if (condition1)
{
  // code to execute if condition1 is true
}
else if (condition2)
{
  // code to execute if condition2 is true
}
else
{
  // code to execute if all conditions are false
}

 

Here is an example that demonstrates the use of the else if statement in C#:

int number = 3;

if (number == 1)
{
  Console.WriteLine("One");
}
else if (number == 2)
{
  Console.WriteLine("Two");
}
else if (number == 3)
{
  Console.WriteLine("Three");
}
else
{
  Console.WriteLine("Number is not 1, 2, or 3.");
}

 

But now I have a specific use case where I need to further check the data within an existing if statement, can I do that? Although you should avoid that, you can, if nested if´s.

Nested if  Conditional statements

Sometimes, we may need to test multiple conditions within each other. In such cases, we can use nested if statements. However, it is generally not recommended to use nested if statements as they can make the code harder to read and debug. Here is an example that demonstrates the use of nested if statements in C#:

int age = 18;
bool isCitizen = true;
bool isRegistered = true;

if (age >= 18)
{
    if (isCitizen)
    {
        if (isRegistered)
        {
            Console.WriteLine("You are eligible to vote in the election.");
        }
        else
        {
            Console.WriteLine("You are not registered to vote.");
        }
    }
    else
    {
        Console.WriteLine("You are not a citizen.");
    }
}
else
{
    Console.WriteLine("You are not old enough to vote.");
}

 

In this example, the first if statement checks if the person is 18 years old or older. If they are, the next if statement checks if they are a citizen. If they are a citizen, the next if statement checks if they are registered to vote. If they are registered, the program outputs a message indicating that the person is eligible to vote. If they are not registered, the program outputs a message indicating that the person is not registered to vote. If the person is not a citizen, the program outputs a message indicating that they are not a citizen. Finally, if the person is not 18 years old or older, the program outputs a message indicating that they are not old enough to vote.

We must reiterate that it is advised not to make overly extensive use of nested statements since it is generally a symptom of complex and unmaintainable code that should be improved and simplified.

Well, my code now looks a bit bloated with all these multiline if statements. Is there another way of using them? Well, there sort of is, with the ternary operator.

 

Ternary operators

Ternary operators are a shorthand way to write if/else statements. They are often used when the condition is simple, and there are only two possible outcomes. The syntax of the ternary operator is as follows:

result = (condition) ? true_value : false_value;

 

Here is an example that demonstrates the use of the ternary operator in C#:

int number = 3;
string message = (number % 2 == 0) ? "Even" : "Odd";
Console.WriteLine(message);

 

In the above example, the program checks whether the number is even or odd using the modulo operator (%). If the number is even, it sets the value of the variable ‘message’ to “Even.” Otherwise, it sets it to “Odd.” Finally, it outputs the value of ‘message,’ which in this case will be “Odd.”

This is not the only way of cleaning up some bloated code, though. The main way and usually most recommended way of handling conditions is the Switch statement.

 

Switch statements

Switch statements are another way to implement conditional statements in C#. They are often used when there are multiple conditions to check, and the code block to execute is different for each condition. The syntax of the switch statement is as follows:

switch (expression)
{
  case value1:
    // code to execute if expression == value1
    break;
  case value2:
    // code to execute if expression == value2
    break;
  ...
  default:
    // code to execute if none of the cases are true
    break;
}

 

Here is an example that demonstrates the use of the switch statement in C#:

int month = 4;

switch (month)
{
  case 1:
    Console.WriteLine("January");
    break;
  case 2:
    Console.WriteLine("February");
    break;
  case 3:
    Console.WriteLine("March");
    break;
  case 4:
    Console.WriteLine("April");
    break;
  case 5:
    Console.WriteLine("May");
    break;
  case 6:
    Console.WriteLine("June");
    break;
  case 7:
    Console.WriteLine("July");
    break;
  case 8:
    Console.WriteLine("August");
    break;
  case 9:
    Console.WriteLine("September");
    break;
  case 10:
    Console.WriteLine("October");
    break;
  case 11:
    Console.WriteLine("November");
    break;
  case 12:
    Console.WriteLine("December");
    break;
  default:
    Console.WriteLine("Invalid month");
    break;
}

 

In the above example, the program checks the value of the variable ‘month’ using a switch statement. If the value is 1, it outputs “January.” If it is 2, it outputs “February.” And so on. If the value is anything else, it outputs “Invalid month.”

Alright, got it, but when do I use Switch statement over if/else statements?

 

Comparison between if/else and switch statements

Conditional statements are a fundamental aspect of programming that allow developers to control the flow of their code. While if/else statements are a powerful tool for implementing conditional logic, they can become cumbersome when there are multiple conditions to test. Switch statements offer an alternative way to implement conditional logic that can be more efficient and easier to read for certain scenarios.

One of the main advantages of if/else statements is their flexibility. They can test for a wide range of conditions and can incorporate multiple conditions in a single statement. They also allow for range testing and the use of logical operators such as AND, OR, and NOT to create complex conditions. Additionally, if/else statements can be easier to read when there are only a few conditions to test.

However, if/else statements can become difficult to read and maintain as the number of conditions increases. They can also be prone to logic errors with complex conditions. In these cases, switch statements may be a better choice.

Switch statements are often faster and more efficient than if/else statements when there are multiple conditions to test. They can also improve the readability of code by making the flow of control more explicit. Switch statements can be easier to read when there are many conditions to test and each condition has a single value. They are also useful when the cases are easily expressed as constant expressions.

However, switch statements have their own limitations. They can only test for equality with a single expression and the cases in a switch statement must be constant expressions. This can limit their flexibility and make them harder to read for complex conditions or cases with complex code blocks.

So, when should you use if/else statements versus switch statements?

Use if/else statements when there are a small number of conditions to test or when the conditions are complex and require the use of logical operators. If/else statements are also useful when range testing is required or when the conditions are not easily expressed as constant expressions.

On the other hand, use switch statements when there are many conditions to test and each condition has a single value. They are also useful when the cases are easily expressed as constant expressions, and when the flow of control can be made more explicit and readable.

In short, both if/else statements and switch statements are powerful tools for implementing conditional logic in C#. Understanding their strengths and limitations can help developers choose the appropriate statement for their specific use case, leading to more efficient and maintainable code.

 

Conclusion: Conditional statements in C# .NET 7

In conclusion, conditional statements are an essential part of any programming language, and C# provides several ways to implement them. As a quick summary, we can see the following:

The if/else statement is the most basic and widely used form of conditional statement in C#. It allows the programmer to test a condition and execute a code block based on the result of the test. The else if statement allows for multiple conditions to be tested in sequence, while the nested if statement can lead to difficult-to-read code and is generally not recommended.

The ternary operator provides a shorthand way to write if/else statements for simple conditions with only two possible outcomes. It can make code more concise and easier to read.

Switch statements are another way to implement conditional statements in C#. They are often used when there are multiple conditions to check, and the code block to execute is different for each condition. While they are faster than if/else statements, they are less flexible and can only test for equality between a variable and a set of values.

Ultimately, the choice of which conditional statement to use in C# depends on the specific needs of the program. If there is only one condition to test, an if/else statement or ternary operator may be the best choice. If there are multiple conditions to check, a switch statement may be more appropriate. Whatever the choice, it is important to write clean, readable code that accurately reflects the logic of the program.

If you want to skyrocket your C# career, check out our powerful ASP.NET FULL-STACK WEB DEVELOPMENT COURSE, which also covers test-driven development and C# software architecture.

 

Lost in coding? Discover our Learning Paths!
Lost in coding? Discover our Learning Paths!
Tired of being just an average developer?
Stop wasting your time and learn coding the right (and easy) way!
Tired of being just an average developer?
Stop wasting your time and learn coding the right (and easy) way!
Enter your email and we will send you the PDF guide:
Enter your email and we will send you the PDF guide