2

次のコードが機能しないのはなぜですか?

Private Function resolveSiteName(ByVal plantName As String, ByVal siteName As String) As Integer
    Dim siteId As Integer = Nothing
    Dim fullName As String = plantName & siteName
    Select Case fullName
        Case fullName.Contains("Example" And "Example2" And "Example3")
            siteId = 0
    End Select
    Return siteId
End Function

デバッグSelect Case fullName時に条件が満たされ、siteId.

私もこれだけやってみた

Case fullName.Equals("Exactly what full name is")

それが機能するかどうかをテストするためだけに...それでも割り当て部分をスキップしました。

ここで何が欠けていますか?

4

5 に答える 5

6

これもうまくいくはずです:

Select Case fullName
   Case "Example", "Example2", "Example3"
      siteId = 0
End Select
于 2013-01-24T14:43:28.623 に答える
3

If-clause を使用すると、これはコンパイルされないことに注意してください(ここではより適切です):

If fullName.Contains("Example" And "Example2" And "Example3") Then
    ' this doesn't compile since you cannot concat a string with And
    ' you want to check if fullName equals to one of the strings anyway
    siteId = 0
End If

一度に複数のアイテムをチェックしたい場合は、コレクションを定義し、すべてを追加してから次を使用しますContains

Dim siteNames = { "Example", "Example2", "Example3" }
If siteNames.Contains(fullName) Then
    siteId = 0
End If
于 2013-01-24T14:19:46.457 に答える
0

これはあなたの問題を解決します:

Select Case True
    Case fullName.Contains("Example")
        siteId = 0
End Select

または、2回目の試行:

Select Case fullName
    Case "Exactly what full name is"
        siteId = 0
End Select    
于 2013-01-24T14:41:31.513 に答える
0

交換

Select Case fullName

Select Case True
于 2015-08-14T14:38:48.283 に答える
0

これを試して:

Select Case fullName
   Case "Example"
      siteId = 0
   Case "Example2"
      siteId = 0
   Case "Example3"
      siteId = 0
End Select
于 2013-01-24T14:18:44.477 に答える