【发布时间】:2020-05-10 12:13:47
【问题描述】:
我正在使用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,这大概是因为它找到了字符' ';我不希望它检查每个字符,我希望它像 Option Strict 是 off 时那样检查整个字符串,但我无法解决。
我尝试了.ToCharArray,但这确实起到了同样的作用。
【问题讨论】:
-
Contains(".exe") 后面多了一个空格是真的需要还是错字?
-
是的,您的代码是意外运行的。它没有按照您的想法做,在这种特定情况下,这无关紧要,这纯粹是运气。您实际上想要实现的是什么,因为该代码看起来很奇怪,而且我非常有信心有更好的方法来做您想做的任何事情?为什么要使用
Split删除String末尾的任何字符,更不用说文件路径中的扩展名了? -
关于
Option Strict On,它真正做的只是强迫你使用你的代码所期望的类型的值。如果您甚至收到与Option Strict相关的错误,只需查看您的代码需要什么类型以及您正在使用什么类型。在这种情况下,如果您阅读了您正在使用的Split重载的文档,那么您会看到它需要Char,而不是String。如果您进一步阅读以了解哪些重载可用,您会看到还有其他重载以及哪些接受String分隔符。
标签: vb.net option-strict