1

我正在使用Option Strict On(有时希望我不是!)但是有一段代码可以在没有它但没有它的情况下按我想要的方式工作。

我认为这应该很简单,但我在这里找不到答案。

我的代码Option Strict Off是这样的:

If returnedString.Contains(".exe ") And returnvalues.Count = 0 Then
  Dim x As Integer = 0
  For Each entry In returnedString.Split(".exe ")
    If (entry.Length > 0) And x = 0 Then
      returnvalues.Add(entry & ".exe")
      x = x + 1
    End If
  Next
End If

例如returnedString

C:\Program Files (x86)\Whatever\Whatever.exe

C:\Program Files (x86)\Whatever\Whatever

在条目中返回 if Option Strictis off,这就是我想要的。

但是,如果我使用 Visual Studio 的添加演员的建议,则以下内容不起作用:

For Each entry As String In returnedString.Split(CType(".exe ", Char()))

返回的第一个条目是C:\Program,这可能是因为它找到了 Char ' ';我不希望它检查每个字符,我希望它像 when Option Strictis那样检查整个字符串,off但我无法解决。

我试过.ToCharArray了,但这确实做同样的事情。

4

1 回答 1

1

请继续使用Option Strict On。这很烦人,但它会为您节省很多时间。

对于您的问题:

这是因为当您启用时Option Strict On,编译器不再允许从您的字符串中获取第一个字符并将其用作分隔符。因为没有重载string.Split需要一个字符串,所以它抱怨尝试进行无效转换。

如果要使用字符串作为分隔符,则需要将字符串数组作为第一个参数传递,并且需要第二个类型的参数StringSplitOptions

修复它真的很简单。只需将行更改为:

For Each entry In returnedString.Split({".exe"}, StringSplitOptions.None)
于 2020-05-10T12:58:35.510 回答