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 Strict
是off
,条目中返回,这是我想要的。
但是,如果我使用 Visual Studio 的添加演员表的建议,则以下内容不起作用:
For Each entry As String In returnedString.Split(CType(".exe ", Char()))
返回的第一个条目是 C:\Program
,这大概是因为它找到了 Char ' '
;我不希望它检查每个字符,我希望它像 Option Strict
是 off
时那样检查整个字符串,但我无法解决。
我试过 .ToCharArray
但效果确实一样。
请继续使用Option Strict On
。这很烦人,但它会节省你很多时间。
针对您的问题:
这是因为当您启用Option Strict On
时,编译器不再允许从您的字符串中取出第一个字符并将其用作分隔符。因为 string.Split
没有重载需要 只是 一个字符串,所以它会抱怨尝试进行无效转换。
如果要使用字符串作为分隔符,则需要传递一个字符串数组作为第一个参数,并且需要 StringSplitOptions
类型的第二个参数。
修复它非常简单。只需将行更改为:
For Each entry In returnedString.Split({".exe"}, StringSplitOptions.None)
我正在使用 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 Strict
是off
,条目中返回,这是我想要的。
但是,如果我使用 Visual Studio 的添加演员表的建议,则以下内容不起作用:
For Each entry As String In returnedString.Split(CType(".exe ", Char()))
返回的第一个条目是 C:\Program
,这大概是因为它找到了 Char ' '
;我不希望它检查每个字符,我希望它像 Option Strict
是 off
时那样检查整个字符串,但我无法解决。
我试过 .ToCharArray
但效果确实一样。
请继续使用Option Strict On
。这很烦人,但它会节省你很多时间。
针对您的问题:
这是因为当您启用Option Strict On
时,编译器不再允许从您的字符串中取出第一个字符并将其用作分隔符。因为 string.Split
没有重载需要 只是 一个字符串,所以它会抱怨尝试进行无效转换。
如果要使用字符串作为分隔符,则需要传递一个字符串数组作为第一个参数,并且需要 StringSplitOptions
类型的第二个参数。
修复它非常简单。只需将行更改为:
For Each entry In returnedString.Split({".exe"}, StringSplitOptions.None)