在vb.net中键入转换错误

时间:2013-11-15 12:48:31

标签: asp.net vb.net

在vb.net中有一个位图图像保存代码片段。有人可以帮我理解为什么我在这里得到一个错误,说明我正在尝试将字符串转换为双倍,同时保存图像。如何纠正?

Private Sub Timer5_Tick(sender As System.Object, e As System.EventArgs) Handles Timer5.Tick
            x = MyRandomNumber.Next(1000)
            screenWidth = Screen.GetBounds(New Point(0, 0)).Width
            screenHeight = Screen.GetBounds(New Point(0, 0)).Height
            Dim bmpScreenShot As New Bitmap(screenWidth, screenHeight)
            Dim gfx As Graphics = Graphics.FromImage(bmpScreenShot)
            gfx.CopyFromScreen(0, 0, 0, 0, New Size(screenWidth, screenHeight))
        ***bmpScreenShot.Save("D:\\screenshots\\" + x + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)***
    End Sub

3 个答案:

答案 0 :(得分:3)

"D:\\screenshots\\"是字符串。 x是双倍的。

您尝试添加"D:\\screenshots\\"x,但这会失败,因为"D:\\screenshots\\"不是双倍。

这就是编译器试图告诉你的内容。


查看+ operator的文档:

  

通常,+尽可能执行算术加法,并且仅当两个表达式都是字符串时才连接。

     

表达式的数据类型:

     

对象表达式包含数值,另一个包含String

类型      

编译器采取的行动:

     

如果Option Strict为On,则生成编译器错误。

     

如果Option Strict为Off,则隐式将String转换为Double并添加。

     

如果String无法转换为Double,则抛出InvalidCastException异常。


要连接字符串,请使用& operator

  

生成两个表达式的字符串连接。

... "D:\\screenshots\\" & x & ".jpg"...

String.Format

String.Format("D:\\screenshots\\{0}.jpg", x)

获得的经验教训:

始终使用Option Strict On,并始终查找文档。

答案 1 :(得分:1)

bmpScreenShot.Save("D:\\screenshots\\" + x.ToString() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

答案 2 :(得分:1)

使用&而不是+来连接路径:

bmpScreenShot.Save("D:\\screenshots\\" & x & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)