0

ここで私を助けてください、私は何か間違ったことをしているに違いありません、

ここの最初の例はうまくいきます

 DatabaseType = Array.Find(pArgs, Function(s As String) s.ToLower.Contains("/db:")).Replace("/db:", "") 

しかし、それがfalseで、変数が何もないことが判明した場合、オブジェクト参照例外がスローされるため、結果としてIFをラップしましたが、trueを返すことはなく、次のように変数を設定しません下:

 If DatabaseType = Array.Find(pArgs, Function(s As String) s.ToLower.Contains("/db:")).Replace("/db:", "") Then LogAndTrace("Database Type", DatabaseType)

私がする必要があるのは:

基本的に、取得している多数のコマンドライン引数があり、プレフィックスに従ってそれぞれが何であるかを区別し、適切なプロパティに割り当てる必要がありますが、常にそこにあるとは限らないため、最初に存在するかどうかを確認したかった次に、プレフィックスを何も置き換えずにプロパティに割り当て、ログに書き込みます。

4

1 に答える 1

1

ステートメントの条件内で割り当てを実行しようとするのは悪い考えです。If次のようなものが必要だと思います:

Dim databaseType = Array.Find(pArgs, Function(s As String) s.ToLower.Contains("/db:"))
If databaseType IsNot Nothing Then
    databaseType = databaseType.Replace("/db:", "")
    LogAndTrace("Database Type", databaseType)
End If

(それはローカル変数を使用しています...プロパティIfを割り当てたい場合は、置換を実行したときにブロック内で行います。)

于 2012-10-16T12:40:50.567 に答える