Array.Find未按预期工作

时间:2012-10-16 12:28:15

标签: arrays vb.net

在这里帮助我,我一定做错了,

这里的第一个例子很好用

 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)

我需要做的是:

基本上我有一些命令行参数我得到了,我需要根据他们的前缀去掉它们各自的东西并将它们分配给正确的属性,但它们并不总是会在那里所以我想先看看如果它存在,则将前缀替换为nothing,将其分配给属性并将其写入日志。

1 个答案:

答案 0 :(得分:1)

尝试在If语句的 condition 中执行赋值是个坏主意。 我怀疑你想要这样的东西:

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块中执行此操作,当你执行替换时。)