I have a task at work to rewrite old vb code into c# and i came across this
If (termNumber = TermNumberCode.FallWinter) Then
Dim first_term As String = " ((Course.dbo.CourseList.[Year])=@TermYear) AND ((Course.dbo.CourseList.TermNumber)=3) "
Dim second_term As String = " ((Course.dbo.CourseList.Year)=@TermYear+1) AND ((Course.dbo.CourseList.TermNumber)=1) "
query &= " AND ( ( " & first_term & " ) OR ( " & second_term & " ) ) "
Else
If (termNumber = TermNumberCode.Summer) Then
query &= " AND ((Course.dbo.CourseList.[Year])=@TermYear) AND ((Course.dbo.CourseList.TermNumber)=2) "
ElseIf (termNumber = TermNumberCode.Fall) Then
query &= " AND ((Course.dbo.CourseList.[Year])=@TermYear) AND ((Course.dbo.CourseList.TermNumber)=3) "
ElseIf (termNumber = TermNumberCode.Winter) Then
query &= " AND ((Course.dbo.CourseList.[Year])=@TermYear) AND ((Course.dbo.CourseList.TermNumber)=1) "
End If
End If
I was wondering, Is this the same as writing it like this or if there is any special significance or nesting the ifs like that?
If (termNumber = TermNumberCode.FallWinter) Then
code...
Else if (termNumber = TermNumberCode.Summer)
code...
Else If (termNumber = TermNumberCode.Fall)
code...
Else //(termNumber = TermNumberCode.Winter)
code...
The form
if #1..
else
if #2..
else if #3..
else ..
end
is equivalent to
if #1..
else if #2..
else if #3..
else ..
That is, the immediate nesting inside an else does not affect the logic of the nested branches. This can be repeated indefinitely - although the non-nested form is arguably more clear here.
However, in the presented code the else and a final else if is transposed, which won't make a difference if termNumber if constrained to the set checked against. But it is a difference - what if termNumber is TermNumberCode.SpringBreak? - and thus it must be considered separately from the transformation above..
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With