Do else if statements exist in C#?
I have come across the following code in C#.
if(condition0) statement0;
else if(condition1) statement1;
else if(condition2) statement2;
else if(condition3) statement3;
...
else if(conditionN) statementN;
else lastStatement;
Some of my colleagues tell me that this is an else if
statement. However, I am convinced that it is actually a multi-layered nested if-else
statement. I know that without delimiters {}
, one statement is allowed in an if
or else
. So in this case I think it would be equivalent to the following code.
if(condition0)
statement0;
else
if(condition1)
statement1;
else
if(condition2)
statement2;
else
if(condition3)
statement3;
else
...
Note that all I changed was the whitespace.
This indentation works because each else
goes back to the most recent if
statement when there are no delimiters.
Can anyone clarify if the else if
format in the first example is treated differently by the compiler than the nested if-else
format in the second example?
You are correct; there is no such thing as an "else if" statement in C#. It's just an else where the statement of the alternative clause is itself an if statement.
Of course, the IDE treats "else if" as special so that you get the nice formatting you'd expect.
Note that there is an #elif
construct in the "preprocessor" syntax.
Note also that C, C++ and ECMAScript - and I am sure many more C-like languages - also have the property that there is no formal "else if" statement. Rather, in each the behaviour falls out of the definition of "else" as coming before a single statement.
It's a multi-layered if-else.
The reason it is has to do with c# syntax rules. An else
is followed by a statement, and any if
chain qualifies as a statement.
The construct else if
is never mentioned in the C# specification, except in some examples where it is used without explanation. So I do not think it is a special construct, it is just nested if statements.