加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 嵌套和非嵌套的else / else ifs之间有区别吗?

发布时间:2020-12-16 01:59:55 所属栏目:百科 来源:网络整理
导读:我有一个任务在于将旧的vb代码重写为c#,我遇到了这个问题 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
我有一个任务在于将旧的vb代码重写为c#,我遇到了这个问题

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

我想知道,这是否像写这样或者是否有任何特殊意义或嵌套ifs那样?

If (termNumber = TermNumberCode.FallWinter) Then
    code...

Else if (termNumber = TermNumberCode.Summer)
    code...

Else If (termNumber = TermNumberCode.Fall) 
    code...

Else //(termNumber = TermNumberCode.Winter)
    code...

解决方法

表格

if #1..    
else
   if #2..
   else if #3..
   else ..
end

相当于

if #1..
else if #2..
else if #3..
else ..

也就是说,在else中直接嵌套不会影响嵌套分支的逻辑.这可以无限期地重复 – 尽管非嵌套形式在这里可以说更清楚.

然而,在所呈现的代码中,else和最后的else if被转置,如果termNumber被约束到被检查的集合,则这将没有区别.但这是一个区别 – 如果termNumber是TermNumberCode.SpringBreak怎么办? – 因此必须与上述转换分开考虑..

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读