【问题标题】:VB.Net type conversion from stringVB.Net从字符串类型转换
【发布时间】:2013-03-08 00:52:23
【问题描述】:

这是我第一次尝试在 vb.net 中编写 oop 程序。该程序的基本思想是使用一个excel表作为数据源,然后更新一个mysql数据库。为了实践 OOP 的原则,我创建了一个名为 motorbike 和 FinanceExample 的类型。

我正在使用以下连接字符串,它仅将数据作为文本,因为读取模型 1198 似乎存在问题。

Dim xcelConnString As String = 
    "Provider=Microsoft.Jet.OLEDB.4.0;" _
    & "Data Source=R:\newBikeUpdates\motorcyclesLatest.xls;" _
    & "Extended Properties=""Excel 8.0; IMEX=1"""

所以我正在读取其中的值,然后将它们分配给 motorbike 和 financeExample 对象的属性。

有了 vbscript 的基础后,我很快就非常清楚数据输入并不像我最初想象的那么容易。因此,我编写了一个函数,该函数将在为属性赋值时返回正确的类型:

motorcycle.category = checkValue(xcelDA("Category")) ' String expected
motorcycle.weight = checkValue(xcelDA("Weight")) 'String passed and Integer should be returned.

所以这里是函数:

Function checkValue(ByVal v As Object)
    Dim ret
    If Not IsDBNull(v) Then
        If Double.TryParse(v, ret) Then
            Debug.WriteLine("v is Double")
            Return ret
        ElseIf Integer.TryParse(v, ret) Then
            Debug.WriteLine("v is an Integer")
            Return ret
        ElseIf v.GetType Is GetType(String) Then
            Debug.WriteLine("v is a string")
            Return CStr(v)
        Else ' Presumption of string type
            Debug.WriteLine("v is Other")
            Return v
        End If
    Else
        Debug.WriteLine("v is DBNull")
        ret = ""
        Return ret
    End If
End Function

并且字符串元素适用于类别并返回一个字符串。但是当它开始分配权重值时,我得到了一个传入的“417”字符串,但是 double.tryparse(v,ret) 或 integer.tryparse(v,ret) 元素似乎都不起作用。当使用 debug as v.getType() 时,VS2010 将 v 报告为 string/system.string。我什至尝试过调试传递 integer.tryParse("417",ret) 并且这有效,但由于某种原因它与 v 参数无关。

我也尝试过 integer.tryParse(v.toString,ret) 但这也不起作用。

那么任何人都可以为我指出正确的方向,请告诉我如何解决这个问题,因为 CInt 似乎不起作用(VBscript 接地,抱歉!)

提前非常感谢! 格雷厄姆

【问题讨论】:

    标签: vb.net types type-conversion


    【解决方案1】:

    好吧,公平地说,我在 vbscript 中的传统在这个问题中得到了体现。

    在运行和调试代码并检查 v 的值时,我认为传入的是“417”,我注意到实际传入的值是“417”,并带有额外的空格。

    当然,在 vbscript 中,我很确定会自动进行修剪。因此,在调用函数时修剪字符串实际上会按预期返回一个双精度值。

    别笑,我知道我是个木板!

    如果你看过谢谢, 格雷厄姆

    【讨论】:

    • 好吧,我只是要发表评论说“对我来说很好!”我基本上将“451”作为参数传递给 checkValue。
    • 感谢您的关注。我仍然遇到类型转换问题。对于这个主题以及如何最好地处理它,您有什么建议可以提供。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多