首先,我不想更改Option Explicit的集合。延遲分辨率;可能會發生運行時錯誤,並將對象隱式轉換爲字節的一維數組警告
我一直在努力解決這些警告取決於這裏的答案,有太多類似的問題,但沒有答案沒有工作,或者我不明白更好。所以任何幫助,將不勝感激。我的代碼是
If bs(m.ToArray).Contains(spl) Then
Dim a As Array = fx(m.ToArray, spl)
RaiseEvent data(a(0))
m.Dispose
m = New MemoryStream
If a.Length = 2 Then
m.Write(a(1), 0, a(1).Length)
Thread.Sleep(1)
GoTo rr
End If
End If
和FX功能
Public Function fx(b As Byte(), spl As String) As Array
Dim l As New List(Of Byte())
Dim m As New MemoryStream
Dim mm As New MemoryStream
Dim s As String() = Split(bs(b), spl)
m.Write(b, 0, s(0).Length)
mm.Write(b, s(0).Length + spl.Length, b.Length - (s(0).Length + spl.Length))
l.Add(m.ToArray)
l.Add(mm.ToArray)
m.Dispose()
mm.Dispose()
Return l.ToArray
End Function
的誤差都在a(0)
和a(1)
,請任何幫助,將不勝感激,而不是一個簡單的解決方案,我想知道爲什麼會這樣以及如何避免它 謝謝您的高級。
您正在使用的mem流重載定義爲'Write(buffer()As Byte,offset As Integer,as As Integer count')。所以第一個參數是錯誤的(一個數組元素<>數組),而一個系統數組只能存放Object和Object Byte()。你有錯誤的數據類型。 (並且與Option Explicit沒什麼關係) – Plutonix
@Plutonix好吧,我明白了,但是怎麼會是警告而不是錯誤呢?我可以投它來解決這些警告,或者我必須改變'fx'函數返回什麼? – tpo97969
它*是一個錯誤,但您可能會將VS配置爲將其降級爲警告。不需要進行轉換,首先需要將其設置爲正確的類型:定義'fx'返回'Byte()' – Plutonix