1

これは難解な質問かもしれませんが、これが重複しているとは思いませんが配列を Select Case ステートメントで使用できるかどうかを理解するのに助けが必要です。

文字列配列を動的に作成するサブルーチンがあります。XML もリストされていますが、以下にリストされている値のいずれかである可能性があります。次のようになります。

Dim offensiveLine() As String = New String() {"center", "right wing", "left wing"}
Dim defensiveLine As String = "defense"
Dim playerInfo = <Player><Name>John</Name><Position val="right wing"/></Player>

私がやりたいことは、このプレーヤーが攻撃ラインの 1 つにあるかどうかを確認することです。だから私は言う:

Dim playerPosition = playerInfo.Position.@val
Select Case playerPosition
Case offensiveLine
'do something
Case defensiveLine
'do something
Case Else 
'do nothing
End Select

ここに問題があります:Case offensiveLineは無効です。を書き出すことができることはわかってCase "center", "right wing", "left wing"いますが、それでは、Case ステートメントで読み取ることができる配列である一般化された変数を作成するという、私がやろうとしていることの目的が無効になります。Dim offensiveLine = ""center", "right wing", "left wing""次に、次のような変数を作成して渡すことはできないことを知っています。

配列を Case ステートメントに渡し、それぞれを評価する方法についての洞察はありますか?

4

3 に答える 3

3

ここでは、スイッチではなく if 句を使用することを検討してください。このロジックを試してください: offensiveLine に playerPosition が含まれている場合、攻撃ラインなど。

于 2009-12-14T23:05:25.770 に答える
3

実際にステートメントを使用できます。Select

Dim playerPosition = playerInfo.Position.@val
Select Case True
    Case offensiveLine.Contains(playerPosition)
        'do something
    Case defensiveLine.Contains(playerPosition)
        'do something
    Case Else 
        'do something - otherwise you don't need the 'Case Else'
End Select

トリックは、の最初の行のTrueSelectです。

于 2016-01-21T02:36:28.507 に答える
2

コンストラクトはそのSelect..Caseようには機能しません。ただし、要素が配列に存在するかどうかをテストするのは簡単です。

If offensiveLine.Contains(playerPosition) Then
    'Do something
ElseIf defensiveLine.Contains(playerPosition) Then
    'Do something else
End If
于 2010-01-10T01:18:31.437 に答える