0

下面的代码有效,但我不禁想到有更好的方法来做到这一点。有没有人在将函数与 Select 语句结合使用方面有经验。
我希望工作的代码将是类似的东西......

Select Case File.EndsWith()
Case "example 1", Case "example2"

此代码有效:

Select Case File.EndsWith(File)
    Case tFile.EndsWith("FileA.doc")
        sbExisting.AppendLine(Report.sbStart.ToString)
        sbExisting.AppendLine(Report.sbHeaders.ToString)
        sbExisting.AppendLine(Report.sbItems.ToString)
        sbExisting.AppendLine(Report.sbSubreport.ToString)
        sbExisting.AppendLine(Report.sbEnd.ToString)
        sbExisting.AppendLine(Report.sbCol.ToString)
    Case tFile.EndsWith("FileB.doc")
        'Slave
        sbExisting.AppendLine(Report.sbStart.ToString)
        sbExisting.AppendLine(Report.sbItems.ToString)
        sbExisting.AppendLine(Report.sbHeaders.ToString)
        sbExisting.AppendLine(Report.sbCol.ToString)
        sbExisting.AppendLine(Report.sbEnd.ToString)
End Select
4

2 回答 2

0

.EndsWith()返回真或假。这就是你所拥有的。

如果您确实想使用Select它,那么惯用的方式是

Select Case True
    Case tFile.EndsWith("MSMaster.tmp")
        ...
    Case tFile.EndsWith("MSSlave.tmp")
        ...
End Select

在同一行上有多个选择不会有太大区别:

Select Case True
    Case tFile.EndsWith("example 1"), tFile.EndsWith("example 2")
        ...
    Case tFile.EndsWith("example 3"), tFile.EndsWith("example 4")
        ...
End Select

如果您已经在数组/列表/集合中有一个选项列表,您也可以使用

Dim choices1 = New String() {"example 1", "example 2"}
Dim choices2 = New String() {"example 3", "example 4"}

Select Case True
    Case choices1.Any(Function(s) tFile.EndsWith(s))
        ...
    Case choices2.Any(Function(s) tFile.EndsWith(s))
        ...
End Select

或者,如果您愿意,也可以执行相同的内联:

Select Case True
    Case (New String() {"example 1", "example 2"}).Any(Function(s) tFile.EndsWith(s))
        ...
    Case (New String() {"example 3", "example 4"}).Any(Function(s) tFile.EndsWith(s))
        ...
End Select
于 2012-10-19T19:48:58.137 回答
0

两种情况之间的唯一区别是sbSubreport项目的附加。这是唯一需要特殊检查的项目,可以像下面这样完成

Dim master = tFile.EndsWith("MSMaster.tmp")
Dim slave = tFile.EndsWith("MSSlave.tmp")
If master OrElse slave Then
    sbExisting.AppendLine(Report.sbStart.ToString)
    sbExisting.AppendLine(Report.sbHeaders.ToString)
    sbExisting.AppendLine(Report.sbItems.ToString)
    If master Then
        sbExisting.AppendLine(Report.sbSubreport.ToString)
    End If
    sbExisting.AppendLine(Report.sbEnd.ToString)
    sbExisting.AppendLine(Report.sbCol.ToString)
End If
于 2012-10-19T19:49:16.353 回答