0
我需要选择一种方法来编写一段代码,它会重复很多,所以我希望它尽可能快。嵌套如果 - 否则如果 - 选择案例
这是我的代码(目前):
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或者选择案例),如下所示:
使用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上的三种方法,但我不确定结果。
您能否给我建议正确的选择?
我会使用一个函数,返回基于您传递给它的'Col'变量的值。这会让这个更具可读性。 – OneFineDay
你已经得到了代码,NET有一个高分辨率的秒表,只是做一个循环中的每一个,并计时(做它在释放模式)。您可能想要将循环迭代器更改为Int32/Integer。 – Plutonix
@Plutonix你是否在说我使用'For Cel As Integer'会使代码比使用'For Cel As Short'更快? – genespos