Option Strict On 不允许从 'String ' 到 'Char' VB.NET 的隐式转换

Option Strict On disallows implicit conversions from 'String ' to 'Char' VB.NET

我正在使用 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

如果Option Strictoff,条目中返回

,这是我想要的。

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

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

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

我试过 .ToCharArray 但效果确实一样。

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

针对您的问题:

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

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

修复它非常简单。只需将行更改为:

For Each entry In returnedString.Split({".exe"}, StringSplitOptions.None)