无法将类型为'System.Byte []'的对象强制转换为'System.IConvertible'

时间:2010-06-05 06:28:10

标签: vb.net

我在以下代码

中收到错误
Function ReadFile(ByVal sPath As String) As Byte

    Dim data As Byte
    data = Nothing

    Dim fInfo As FileInfo
    fInfo = New FileInfo(sPath)

    Dim numBytes As Long
    numBytes = fInfo.Length

    Dim fStream As FileStream
    fStream = New FileStream(sPath, FileMode.Open, FileAccess.Read)

    Dim br As BinaryReader
    br = New BinaryReader(fStream)

    data = Convert.ToByte(br.ReadBytes(numBytes)) `getting error on this line`
    Return data
End Function

2 个答案:

答案 0 :(得分:3)

ReadBytes函数返回一个字节数组,您将传递给Convert.ToByte函数,该函数在运行时抛出异常,因为您无法将多个字节的数组转换为单个字节。根据您要完成的操作,修复问题的操作会有所不同。

答案 1 :(得分:1)

  • 您已定义ReadFile以返回单个字节,如字节。
  • ReadBytes返回一个字节数组,如Byte()。
  • 您无法将字节()转换为字节。
    • 字节(0)=字节
    • 字节<>字节()
  • Convert.ToByte接受一个Object。
  • 带有Option Strict Off的Visual Basic .NET将尝试通过调用Byte()数组上的System.IConvertible接口将Byte(),即传递给Convert.ToByte的Object转换为Byte,这将引发异常因为Array没有实现这个接口。

从您的函数实现中,很明显您想要返回所有字节。因此,更改ReadFile以返回Byte()并删除ToByte方法调用。