簡體   English   中英

Option Strict On 禁止從 'String' 到 'Char' VB.NET 的隱式轉換

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

我正在使用 Option Strict On(有時希望我不是。)但是有一段代碼可以在沒有它但沒有它的情況下按我的意願工作。

我認為這應該很簡單,但我在這里找不到答案。 我使用 Option 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

例如,返回的字符串是 C:\Program Files (x86)\Whatever\Whatever.exe - 和 C:\Program Files (x86)\Whatever\Whatever 如果 Option Strict 關閉,則在條目中返回,這就是我想要的. 但是,如果我使用 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM