嵌套If - ElseIf - 选择案例

时间:2015-11-19 19:45:02

标签: vb.net if-statement select-case

我需要选择一种编写一段代码的方法,这段代码会重复很多,所以我希望它尽可能快。

这是我的代码(目前):

For Cel As Short = 0 To Cels - 1
    Rw = Int(Cel / 3) + 1
    Col = Cel - ((Rw - 1) * 3) + 1
    RifTxt = TabW(RifTW("Pi")).Cells(Cel)
    If Col = 1 Then
        RowArr(Col) = RifTxt
    Else
        If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
            RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
        Else
            RowArr(Col) = "0000-00-00"
        End If
        If Col = 3 Then
            RowArr(3) = Rw
            Pi_W.Rows.Add (RowArr)
        End If
    End If
Next Cel

我想知道更改它(使用ElseIf或Select Case)如下所示:

使用ElseIf

For Cel As Short = 0 To Cels - 1
    Rw = Int(Cel / 3) + 1
    Col = Cel - ((Rw - 1) * 3) + 1
    RifTxt = TabW(RifTW("Pi")).Cells(Cel)
    If Col = 1 Then
        RowArr(Col) = RifTxt
    ElseIf Col = 2
        If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
            RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
        Else
            RowArr(Col) = "0000-00-00"
        End If
    ElseIf Col = 3 Then
        If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
            RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
        Else
            RowArr(Col) = "0000-00-00"
        End If
        RowArr(3) = Rw
        Pi_W.Rows.Add (RowArr)
    End If
Next Cel

或使用Select Case:

For Cel As Short = 0 To Cels - 1
    Rw = Int(Cel / 3) + 1
    Col = Cel - ((Rw - 1) * 3) + 1
    RifTxt = TabW(RifTW("Pi")).Cells(Cel)
    Select Case Col
    Case is = 1 Then
        RowArr(Col) = RifTxt
    Case is = 2
        If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
            RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
        Else
            RowArr(Col) = "0000-00-00"
        End If
    Case is  = 3 Then
        If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
            RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
        Else
            RowArr(Col) = "0000-00-00"
        End If
        RowArr(3) = Rw
        Pi_W.Rows.Add (RowArr)
    End Select
Next Cel

我试着在.netFiddle上比较三种方法,但我不确定结果。

你能建议我正确的选择吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您的SelectIf示例最有可能编译为相同的机器代码,性能完全相同。

在任何情况下:不要担心这样的微优化,除非您已经证明它是代码的问题部分。写一些可读和可维护的东西,首先是。这种或那种表现方式的差异可以忽略不计。

与往常一样,如果你想知道什么表现更好,试试并看看。