在VB.NET方法中准备“无”

时间:2010-10-27 19:10:56

标签: vb.net

我有这个方法:

Private Sub SetIfNotNull(ByVal input As Object, ByRef destination As Object, ByVal ConversionType As ConversionType)
        If input IsNot Nothing AndAlso input <> "" Then
            Select Case ConversionType
                Case DealerTrackConnection.ConversionType._String
                    destination = input
                Case DealerTrackConnection.ConversionType._Integer
                    destination = Convert.ToInt32(input)
                Case DealerTrackConnection.ConversionType._Double
                    destination = Convert.ToDouble(input)
                Case DealerTrackConnection.ConversionType._Date
                    destination = Convert.ToDateTime(input)
                Case DealerTrackConnection.ConversionType._Decimal
                    destination = Convert.ToDecimal(input)
            End Select
        End If
    End Sub

这是一次失败的电话:

SetIfNotNull(ApplicantElement.Element("suffix").Value, NewApplicant.Suffix, ConversionType._String)

如果XML文件中的元素为空(没有标记),则方法调用失败。但我无所事事。为什么这样做以及如何修改代码以便每次都修复它。

2 个答案:

答案 0 :(得分:2)

问题不在您的SetIfNotNull方法中,而是在这段代码中:ApplicantElement.Element("suffix").Value

该元素为空,因此Value调用会抛出NullReferenceException。试试这个:

CType(ApplicantElement.Element("suffix"), String)

此外,您可以合并此行中的支票:

If input IsNot Nothing AndAlso input <> "" Then

进入这个:

If Not String.IsNullOrEmpty(input) Then

答案 1 :(得分:0)

申请人Element.Element(“后缀”)似乎什么都没有,因此在调用方法之前会发生异常,不是吗?

If Not ApplicantElement.Element("suffix") Is Nothing Then
    SetIfNotNull(ApplicantElement.Element("suffix").Value, NewApplicant.Suffix, ConversionType._String)
End If