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

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

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

我认为这应该很简单,但是我在这里找不到答案。我与Option Off一起使用的代码是:

1
2
3
4
5
6
7
8
9
    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

例如,返回的字符串是C:\\\\ Program Files(x86)\\\\ Whatever \\\\ Whatever.exe-和C:\\\\ Program Files(x86)\\\\ Whatever \\\\ Whatever如果有Option,则在输入项中返回严格关闭,这就是我想要的。但是,如果我使用Visual Studio添加演员表的建议,则以下操作将无效:

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

返回的第一个条目是C:\\\\ Program,这大概是因为它找到了Char''。我不希望它检查每个字符,我希望它检查整个字符串,就像Option Strict关闭时一样,但是我无法解决。我尝试了.ToCharArray,但这确实做了同样的事情。


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

对于您的问题:

这是由于以下事实造成的:当启用Option Strict On时,不再允许编译器从字符串中获取第一个char并将其用作分隔符。因为没有string.Split的重载,它只接受一个字符串,所以它抱怨尝试进行无效的转换。

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

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

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