0

帮帮我,我一定是做错了,

这里的第一个例子工作正常

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

但是如果那是假的并且我的变量结果什么都没有,那么它会抛出对象引用异常,因此我在它周围包裹了一个 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 回答