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

标签 vb.net option-strict

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

相关文章:

mysql - 显示数据库 MySQL VB.net 的最后一行

VB.NET:哪个 As 子句与带有 Option Strict On 的匿名类型一起使用?

.net - VB.NET严格关闭选项

vb.net - 您在项目中使用严格关闭吗?

vb.net - 应该使用 mid 和 instr,还是使用 indexof 和 substring?

jquery - 自动完成jquery和SQL,ASP.NET

c# - Windows 7 中的 .NET 模拟(不允许请求的注册表访问)

vb.net - 使用 c#.net 将剪贴板中的图像显示到 Windows 的默认图像查看器