我正在使用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 关闭时那样,但我无法解决。
我尝试了.ToCharArray
,但这确实做了同样的事情。
最佳答案
请继续使用Option Strict On
。这很烦人,但它会节省你很多时间。
对于您的问题:
这是由于当您启用Option Strict On
时,编译器不再允许从字符串中获取第一个字符并将其用作分隔符。因为 string.Split
没有重载,只需要一个字符串,所以它会提示尝试进行无效转换。
如果要使用字符串作为分隔符,则需要传递字符串数组作为第一个参数,并且需要 StringSplitOptions
类型的第二个参数。
修复它非常简单。只需将行更改为:
For Each entry In returnedString.Split({".exe"}, StringSplitOptions.None)
关于vb.net - Option Strict On 不允许从 'String ' 到 'Char' VB.NET 的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61711779/