内联代码中的十进制try解析

时间:2014-01-22 11:53:16

标签: vb.net inline-code

如果值为null或为空,则在下面的代码行中如何使用Decimal.TryParse,那么在VB.NET中的内联编码中它应为0

<input type="checkbox" name="ticket" id="ticket<%=y%>" title="<%=(CDec(Decimal.TryParse(late_fee)) + CDec(rs("ticket_amount")) + CDec(rs("nsf_fee")))-(CDec(rsp("TICKET_PAYMENTS")) + CDec(rsp("LATEFEE_PAYMENTS")) + CDec(rsp("NSFFEE_PAYMENTS")))%>" value="<%=rs("ticket_id")%>" checked="checked" onclick="doMath();"/>

感谢您的建议

2 个答案:

答案 0 :(得分:0)

TryParse根据转换是否成功返回true或false。

尝试:

double number;
Double.TryParse(late_fee, out number);

number:“当此方法返回时,包含等效于late_fee参数的双精度浮点数,如果转换成功,则包含转换失败时为零”

使用'数字'

 (CDec(number) + CDec(rs("ticket_amount")) + CDec(rs("nsf_fee")))-(CDec(rsp("TICKET_PAYMENTS")) + CDec(rsp("LATEFEE_PAYMENTS")) + CDec(rsp("NSFFEE_PAYMENTS")))

答案 1 :(得分:0)

您无法内联TryParse方法,因为您需要首先声明将从TryParse - 方法返回的变量。您必须使用多行或创建一个返回它的方法。

我建议无论如何都要使用变量,因为这会使你的代码更具可读性,而且这是最重要的。

但是,对于它的价值,您可以创建一个返回小数或默认值的扩展名:

Module StringExtensions

    <Runtime.CompilerServices.Extension()>
    Public Function ParseDecimal(ByVal aString As String, defValue As Decimal, Optional culture As Globalization.CultureInfo = Nothing) As Decimal
        Dim retVal As Decimal = defValue
        If culture Is Nothing Then culture = Globalization.CultureInfo.CurrentCulture
        Decimal.TryParse(aString, Globalization.NumberStyles.Any, culture, retVal)
        Return retVal
    End Function

End Module

然后你可以内联计算,即使我仍然会使用多行和变量来提高可读性。

Dim lateFee As Decimal = late_fee.ParseDecimal(0)  ' and the other variables ....