下面的代码有效,我不禁想到有更好的方法可以做到这一点。是否有人使用功能与选择语句一起使用 我期望工作的代码将是符合条件的......
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
答案 0 :(得分:0)
.EndsWith()
返回true或false。这就是你所拥有的一切。
如果您确实想要使用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
答案 1 :(得分: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